两数相加模板:

//n进制数相加int carry=0;
int bit;
int 数1,数2;
point1指向数1的最低位,point2指向数2的最低位
res;//结果
while(point1不到最高位&&point2不到最高位)
{bit=point1->val +point2->val+carry;if(bit>=n){carry=1;结果最后加入数(bit-n);}else{carry=0;结果最后加入数(bit);}
}
while(point1不到最高位)
{bit= point1->val+carry;if(bit>=n){carry=1;结果加入数(bit-n);}else{carry=0;结果加入数(bit);}
}
while(point2不到最高位)
{bit=point2->val+carry;if(bit>=n){carry=1;结果加入数(bit-10);}else{carry=0;结果加入数(bit);}
}
//如果到最后还有进位没加
if(carry==1)
{结果加入数(1);
}
return 结果;}
};

具体思路:

(1)用存放节点类型的栈来实现从低位向高位的遍历

(2)用头插法实现向结果串中添加位数

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
stack<ListNode*>st1;
stack<ListNode*>st2;
ListNode *head=new ListNode();
ListNode *p=l1;
while(p)
{st1.push(p);p=p->next;
}
p=l2;
while(p)
{st2.push(p);p=p->next;
}
ListNode *p1,*p2,*s;
int carry=0;
int bit;
while(!st1.empty()&&!st2.empty())
{p1=st1.top();st1.pop();p2=st2.top();st2.pop();bit=p1->val+p2->val+carry;if(bit>=10){carry=1;s=new ListNode(bit-10);s->next=head->next;head->next=s;}else{carry=0;s=new ListNode(bit);s->next=head->next;head->next=s;}
}
while(!st1.empty())
{p1=st1.top();st1.pop();bit=p1->val+carry;if(bit>=10){carry=1;s=new ListNode(bit-10);s->next=head->next;head->next=s;}else{carry=0;s=new ListNode(bit);s->next=head->next;head->next=s;}
}
while(!st2.empty())
{p2=st2.top();st2.pop();bit=p2->val+carry;if(bit>=10){carry=1;s=new ListNode(bit-10);s->next=head->next;head->next=s;}else{carry=0;s=new ListNode(bit);s->next=head->next;head->next=s;}
}
if(carry==1)
{s=new ListNode(1);s->next=head->next;head->next=s;
}
return head->next;}
};

Leetcode445 两数相加||(单链表)相关推荐

  1. leetcode-445. 两数相加 II

    给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储一位数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶: 如 ...

  2. leetcode445. 两数相加 II

    给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储一位数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶: 如 ...

  3. 【LeetCode 2】两数相加(链表)

    给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的链表. 你可以假设除了数字 0 ...

  4. 力扣刷题-单链表两数相加

    分区:链表 2.两数相加 题目描述: 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表 ...

  5. LeetCode 2 两数相加(链表)

    题目要求: 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入 ...

  6. python 链表两数相加

    | 两数相加 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的链表. 你可以假设 ...

  7. 链表相加 2. 两数相加

    2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链 ...

  8. LeetCode 445. 两数相加 II(链表大数加法)

    1. 题目 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进 ...

  9. [链表遍历|模拟] leetcode 2 两数相加

    [链表遍历|模拟] leetcode 2 两数相加 1.题目 题目链接 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果 ...

最新文章

  1. 友元程序集(C# 和 Visual Basic)
  2. windows 2003下snort安装
  3. openCV视频处理与图像转换
  4. biweb wms门户网站php开源建站系统 v5.8.3,BIWEB WMS PHP开源企业建站系统 v5.8.5
  5. lunix下的redis数据库操作——list列表
  6. Flex4之皮肤定制
  7. asp.net怎么实现按条件查询_Display Posts : 按条件显示WordPress文章的最强插件
  8. sql server 配置管理器里为什么是32位_Windows Server2012 配置打印服务器图文教程
  9. html背景设置为彩色,CSS3 彩色网格背景
  10. 鸿蒙系统可以安装teams吗,鸿蒙致命弱点被曝光!不能装这个软件,80%用户将望而却步!...
  11. 初识java atomic
  12. Android四大组件之 --- Service入门
  13. 基于vue3.0全家桶H5模板
  14. 深度linux 1050ti,Archlinux安装NVIDIA1050Ti显卡驱动
  15. poj 3626 Mud Puddles
  16. 运维工程师 主要是做什么的?
  17. IM即时通讯需要解决的问题
  18. mysql篇-sql查询语句-平均分、最高最低分、排序
  19. 渗透测试实用浏览器插件推荐
  20. 稳压二极管和普通二极管的区别

热门文章

  1. PHP执行linux系统命令
  2. 深入理解 ViewState
  3. HDU2564 词组缩写【文本】
  4. HDU3787 A+B【进制】
  5. 语言与哲学 —— 维特根斯坦
  6. 贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
  7. 用几何(解析几何)方法求解概率问题
  8. Linux 下 ascii 的查看方式
  9. Python 进阶 —— 迭代器与生成器
  10. Python 进阶 —— 使用 map reduce