[LeetCode]002-AddTwoNumber
2015-11-28 19:55
453 查看
Problem:
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
Subscribe to see which companies asked this question
Solution(1)
第一次做的时候的答案:
Solution(2):
参考了网上的答案后:
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
Subscribe to see which companies asked this question
Solution(1)
第一次做的时候的答案:
ListNode* addTwoNumbers(ListNode* l1,ListNode* l2) { ListNode* result = new ListNode(0); ListNode* temp; ListNode* tml1; ListNode* tml2; vector<int> tl1; vector<int> tl2; int n,i,r,x,count; tml1 = l1; tml2 = l2; while(tml1 != NULL) { tl1.push_back(tml1->val); tml1 = tml1->next; } while(tml2 != NULL) { tl2.push_back(tml2->val); tml2 = tml2->next; } if(tl1.size() > tl2.size()) { n = tl1.size() - tl2.size(); while(n--) { tl2.insert(tl2.end(),0); } } else { n = tl2.size() - tl1.size(); while(n--) { tl1.insert(tl1.end(),0); } } n = tl1.size(); count = n; i = 0; x = 0; temp = result; while(n--) { r = tl1[i] + tl2[i] + x; if(r<10) { x = 0; temp->val = r; } else { x = 1; temp->val = r-10; } if(i == count-1 && x == 1 ) //最后一位,且有进位 { temp->next = new ListNode(0); temp = temp->next; temp->val = 1; } if(i < count - 1) { temp->next = new ListNode(0); temp = temp->next; } i++; } return result; }
Solution(2):
参考了网上的答案后:
ListNode* addTwoNumbers(ListNode* l1,ListNode* l2) { int cou = 0; ListNode* result = new ListNode(0); ListNode* temp; temp = result; while(l1 !=NULL || l2 != NULL) { int val1 = 0; if(l1 != NULL) { val1 = l1->val; l1 = l1->next; } int val2 = 0; if(l2 != NULL) { val2 = l2->val; l2 = l2->next; } int sum = val1 +val2 + cou; if(sum < 10) { cou = 0; temp->next = new ListNode(sum); temp = temp->next; } else { cou = 1; temp->next = new ListNode(sum - 10); temp = temp->next; } } if(cou == 1) { temp->next = new ListNode(1); } return result->next; }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解