概述
题目描述:
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
进阶:
如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。
思路:
首先存储链表中的数字,然后依次相加,最后构造一个新的链表
代码如下:
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
stack<int>a;
stack<int>b;
while(l1){
a.push(l1->val);
l1=l1->next;
}
while(l2){
b.push(l2->val);
l2=l2->next;
}
ListNode* node=NULL;
int carry=0;
while(!a.empty()||!b.empty()||carry>0){
int sum=carry;
if(!a.empty()){
sum+=a.top();;
a.pop();
}
if(!b.empty()){
sum+=b.top();;
b.pop();
}
ListNode* tmp=new ListNode(sum%10);
tmp->next=node;
node=tmp;
carry=sum/10;
}
return node;
}
};
最后
以上就是风中小兔子为你收集整理的leetcode 445 两数相加||(链表相加、栈)的全部内容,希望文章能够帮你解决leetcode 445 两数相加||(链表相加、栈)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复