Add Two Numbers--LeetCode
来源:互联网 发布:苹果aso优化 编辑:程序博客网 时间:2024/06/07 01:55
Add Two Numbers
(原题链接:点击打开链接)
You are given two non-empty linked lists representing two non-negative integers. 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.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
solution:
/** * 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) { if (l1 == NULL && l2 == NULL) return NULL; else if (l1 == NULL) return l2; else if (l2 == NULL) return l1; ListNode total(0); ListNode* now = &total; int jinwei = 0; ListNode* L1 = l1; ListNode* L2 = l2; while(L1 || L2 || jinwei) { int d1 = L1 ? L1->val : 0; int d2 = L2 ? L2->val : 0; int a = (d1 + d2 + jinwei) % 10; jinwei = (d1 + d2 + jinwei) / 10; if (L1) L1 = L1->next; if (L2) L2 = L2->next; ListNode* newnode = new ListNode(a); now->next = newnode; now = now->next; } return total.next; }};
另外,我们可以用递归解决这个问题。但是在用递归的时候,要注意进位的处理,在得出的结果中要再加上一。
/** * 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) { if (l1 == NULL && l2 == NULL) return NULL; else if (l1 == NULL) return l2; else if (l2 == NULL) return l1; int num = l1->val + l2->val; ListNode* total = new ListNode(num % 10); total->next = addTwoNumbers(l1->next, l2->next); //处理进位 if (num >= 10) { total->next = addTwoNumbers(total->next, new ListNode(num / 10)); } return total; }};
阅读全文
0 0
- LeetCode: Add Two Numbers
- LeetCode: Add Two Numbers
- [LeetCode]Add Two Numbers
- LeetCode Add Two Numbers
- Leetcode: Add Two Numbers
- LeetCode : Add Two Numbers
- LeetCode Add Two Numbers
- [LeetCode] Add Two Numbers
- Leetcode : Add Two Numbers
- 【leetcode】Add Two Numbers
- [LeetCode]Add Two Numbers
- leetcode Add Two Numbers
- LeetCode-Add Two Numbers
- [leetcode] Add Two Numbers
- [LeetCode] Add Two Numbers
- LeetCode - Add Two Numbers
- LeetCode | Add Two Numbers
- 【leetcode】Add Two Numbers
- 推荐系统研究中的九大数据集
- Unity Resources的几个方法
- HDU1689 Just a Hook (线段树)
- PHP实现简单留言板(Smarty版)
- mysql几种引擎比较
- Add Two Numbers--LeetCode
- Redis连接池工具类
- JS页面跳转和刷新的几种方式
- week2-leetcode #2-Add two Numbers[Medium]
- Java中的equals()和hashcode()之间关系
- 多尺度小波分解得到的系数进行处理后如何进行chogng
- 657. Judge Route Circle-Difficulty:Easy
- 从HelloWorld开始
- 感性的人