2. Add Two Numbers--2016/09/18
来源:互联网 发布:ipad如何下载软件 编辑:程序博客网 时间:2024/06/06 13:17
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
思路:按照加法顺序依次加链表并保留进位。尤其注意以下两种场景:
1.两链表个数不同,有一个剩的且此时进位为1(递归计算)
2.两链表个数相同,但计算完时进位为1
/** * 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) { int carry = 0; ListNode* head = new ListNode(0); ListNode* curNode = head; ListNode* carryNode = new ListNode(1); int num1 = 0; int num2 = 0; int sum = 0; //计算加法 while(l1 && l2) { num1 = l1->val; num2 = l2->val; sum = carry + num1 + num2; carry = sum/10; curNode->next = new ListNode(sum%10); curNode = curNode->next; l1 = l1->next; l2 = l2->next; } //其中某一个list未走完 if(l1) { //注意进位没用完 if(carry == 1) { curNode->next = addTwoNumbers(carryNode,l1); } else { curNode->next = l1; } } else { if(l2) { //注意进位没用完 if(carry == 1) { curNode->next = addTwoNumbers(carryNode,l2); } else { curNode->next = l2; } } else { //注意两个list都走完了,但是进位为1 if(l1 == NULL && l2 == NULL && carry == 1) { curNode->next = new ListNode(1); } } } curNode = head->next; free(carryNode); free(head); return curNode; }};
0 0
- 2. Add Two Numbers--2016/09/18
- 2.Add Two Numbers
- 2.Add Two Numbers
- 2.Add Two Numbers
- 2.Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2.Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2. Add Two Numbers
- 2.Add Two Numbers
- 2. Add Two Numbers
- C语言二位数组
- 51Nod-1434-区间LCM
- ubuntu16.04与win10双系统的安装过程遇到的问题解决方案记录
- 配置Log4j(很详细)
- LeetCode 100. Same Tree
- 2. Add Two Numbers--2016/09/18
- Leetcode No. 136. Single Number
- LeetCode No.53 Maximum Subarray
- Linux下 C++程序的编写
- linux的一些学习笔记
- C语言中简单的sizeof()函数
- java 多线程
- Spring上传报错413
- MacPro 安装Wget