概述
链表求和
- 题目描述
- 我的解题
题目描述
给定两个用链表表示的整数,每个节点包含一个数位。
这些数位是反向存放的,也就是个位排在链表首部。
编写函数对这两个整数求和,并用链表形式返回结果。
我的解题
模拟加法
/**
* Definition for singly-linked list.
* struct ListNode {
*
int val;
*
ListNode *next;
*
ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *p = l1;
int tmp=0, c=0;
while(l1->next!=nullptr && l2->next!=nullptr)
{
tmp=l1->val+l2->val+c;
c = tmp/10;
l1->val = tmp%10;
l1=l1->next;l2=l2->next;
}
tmp=l1->val+l2->val+c;
c = tmp/10;
l1->val = tmp%10;
if(l2->next!=nullptr)
{
l1->next=l2->next;
l1=l1->next;
while(c!=0)
{
tmp=l1->val+c;
c=tmp/10;
l1->val = tmp%10;
if(l1->next==nullptr) break;
l1=l1->next;
}
}
if(l1->next!=nullptr)
{
l1=l1->next;
while(c!=0)
{
tmp=l1->val+c;
c=tmp/10;
l1->val = tmp%10;
if(l1->next==nullptr) break;
l1=l1->next;
}
}
if(c==1)
{
ListNode *node = new ListNode(1);
l1->next = node;
}
return p;
}
};
执行用时 :40 ms, 在所有 C++ 提交中击败了32.35%的用户
内存消耗 :71.3 MB, 在所有 C++ 提交中击败了100.00%的用户
最后
以上就是陶醉白昼为你收集整理的程序员面试金典:链表求和的全部内容,希望文章能够帮你解决程序员面试金典:链表求和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复