LeetCode笔记 -- Add Two Number
2017-10-02 18:03
411 查看
这个题是用链表的结构实现加法,由于学习C++的时候接触过链表,所以这个题还算完成的顺利。
这个题要求链表为单向链表,一个链表对象包含着储存的数据和下个节点的地址。java的实现和C++大同小异。
这个是我完成的版本,超过了35%的提交,算是效率不高。
标答版本见LeetCode网站吧。
在这我说说我发现的几点要有意思的地方:
1.感觉这个东西的设计暗含着全加器的理念。
2.注意最后一个进位是否为一。
3.这个读取两个链表的过程和归并排序有异曲同工之妙。
这个题要求链表为单向链表,一个链表对象包含着储存的数据和下个节点的地址。java的实现和C++大同小异。
class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } public class AddTwoNumber { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode result = new ListNode(0); ListNode t = result, p = l1, q = l2; int carry = 0; while (p!= null && q != null){ int sum = p.val + q.val + carry; carry = 0; if (sum > 9) { sum -= 10; carry = 1; } t.next = new ListNode(sum); t = t.next; p = p.next; q = q.next; } while (p != null){ int sum = p.val + carry; carry = 0; if (sum > 9) { sum -= 10; carry = 1; } t.next = new ListNode(sum); t = t.next; p = p.next; } while (q != null){ int sum = q.val + carry; carry = 0; if (sum > 9) { sum -= 10; carry = 1; } t.next = new ListNode(sum); t = t.next; q = q.next; } if (carry == 1) { t.next = new ListNode(1); } return result.next; } }
这个是我完成的版本,超过了35%的提交,算是效率不高。
标答版本见LeetCode网站吧。
在这我说说我发现的几点要有意思的地方:
1.感觉这个东西的设计暗含着全加器的理念。
2.注意最后一个进位是否为一。
3.这个读取两个链表的过程和归并排序有异曲同工之妙。
相关文章推荐
- leetcode笔记--Add Two Numbers
- LEETCODE: Add Two Number
- LeetCode--Add two Number II
- LeetCode-2.Add Two Number-Attemped using C
- LeetCode---(2) Add Two Number
- LeetCode(Add Two Number)
- leetcode2 add two number
- LeetCode Interview Qustions: Add Two Number
- [LeetCode By Python] 2 Add Two Number
- LeetCode 2 Add Two Number
- leetcode----Add Two Number 中学到的有关变量在内存中分配的问题
- 【LeetCode】Merge Two Sorted Lists和Add TwoNumber解题报告
- Leetcode 2. Add Two Number
- leetcode-Add Two Number
- Leetcode练习-Add Two Number
- leetcode add two number
- LeetCode习题笔记——Add Two Numbers
- (python)leetcode刷题笔记 02 Add Two Numbers
- LeetCode刷题笔记(链表):add-two-numbers