[LeetCode] 2. Add Two Numbers
来源:互联网 发布:json数组增加元素 编辑:程序博客网 时间:2024/06/06 10:45
2. Add Two Numbers (两数相加)
- Add Two Numbers 两数相加
- 题目翻译
- 解题方法
- 代码
1. 题目翻译
给定两个非空单链表代表两个非负整数。每个结点有一位数字,以倒序保存在链表中。将两数相加,并返回一个代表结果的链表。假设两个数字不含无效的0(即数字不以0开头),0本身除外。
例子:
输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)输出: 7 -> 0 -> 8解释: 342 + 465 = 807.
2. 解题方法
遍历两个链表把每一位上的数字相加,并用变量记录是否需要进位,该变量初始为0。因为两个数字位数可能不同,所以有四种情况
- 两个链表中都有这一位数字,且两数与进位变量相加小于10,则直接得到新结点,并且将进位变量置位0.
- 两个链表中都有这一位数字,但两数与进位变量相加大于等于10,新结点的值为得到的和减10,并且将进位变量置位1.
- 只有一个链表有这一位数字,且这个数字加进位量小于10,直接得到新结点,变位量置位0.
- 只有一个链表有这一位数字,且这个数字加进位量大于等于10,新结点的值为得到的和减10,并且将进位变量置位1.
需要考虑到,最后可能两个链表相加完成后,进位量为1,要把这一进位量加到数字前面。
3. 代码
//Runtime: 45msclass Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* p=l1; ListNode* q=l2; ListNode* head = new ListNode(0); head->next = NULL; ListNode* tail = head; int temp = 0; while(p&&q){ ListNode* m = new ListNode(p->val+q->val+temp); if(p->val+q->val+temp<10){ temp = 0; }else{ m->val -= 10; temp = 1; } tail->next = m; tail = m; p = p->next; q = q->next; } while(p){ ListNode* m = new ListNode(p->val+temp); if(p->val+temp<10){ temp = 0; }else{ m->val -= 10; temp = 1; } tail->next = m; tail = m; p = p->next; } while(q){ ListNode* m = new ListNode(q->val+temp); if(q->val+temp<10){ temp = 0; }else{ m->val -= 10; temp = 1; } tail->next = m; tail = m; q = q->next; } if(temp){ ListNode* m = new ListNode(temp); tail->next = m; tail = m; } tail->next = NULL; return head->next; }};
阅读全文
0 0
- [LeetCode]2.Add Two Numbers
- LeetCode 2.Add Two Numbers
- LeetCode --- 2. Add Two Numbers
- [Leetcode] 2. Add Two Numbers
- 【leetcode】2. Add Two Numbers
- leetcode 2. Add Two Numbers
- LeetCode-2.Add Two Numbers
- [leetcode] 2. Add Two Numbers
- 【LeetCode】2. Add Two Numbers
- LeetCode - 2. Add Two Numbers
- LeetCode 2.Add Two Numbers
- LeetCode 2. Add Two Numbers
- Leetcode 2. Add Two Numbers
- 2. Add Two Numbers LeetCode
- leetcode 2. Add Two Numbers
- LeetCode-2. Add Two Numbers
- LeetCode 2. Add Two Numbers
- 2. Add Two Numbers----LeetCode
- OpenCV学习笔记(3)——进度条视频播放控制
- Recycleview的点击事件
- 一个登陆注册页面
- HTML基础(5. 下拉框)
- JAVA实现长连接(含心跳检测)Demo
- [LeetCode] 2. Add Two Numbers
- Linux 0.00 代码解析(一)
- 单列模式
- hdoj 1863
- Code::Blocks使用---main.c引用其它.h文件引用无效解决
- Ubuntu-Python安装 scipy,numpy,matplotlib
- 文章标题
- vs2013+osg3.4+qt5.6.2编译过程
- JS中的闭包