Leetcode 2. Add Two Numbers
2017-12-07 23:37
399 查看
Leetcode 2. Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stored inreverse 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.
Example:
C++
Python:
参考:
http://blog.csdn.net/nomasp/article/details/48413977 http://blog.csdn.net/amds123/article/details/68942726 -Python
You are given two non-empty linked lists representing two non-negative integers. The digits are stored inreverse 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.
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = 807.
C++
/** * 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* listNode = new ListNode(0); //创建并初始化listNode ListNode* p1 = l1, *p2 = l2, *p3 = listNode; while(p1 != NULL | p2 != NULL) //两链表不为空 { if(p1 != NULL) //l1链表不为空 { carry 4000 += p1->val; // p1 = p1->next; } if(p2 != NULL) { carry += p2->val; p2 = p2->next; } p3->next = new ListNode(carry%10); // 存入p3链表中 p3 = p3->next; carry /= 10; } if(carry == 1) { p3->next = new ListNode(1); //存入p3链表中 } return listNode->next; } };
Python:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ def V(val): return val is not None result = None pre = None tag = 0 while V(l1) or V(l2): l1_val = V(l1) and l1.val or 0 l2_val = V(l2) and l2.val or 0 val = l1_val + l2_val + tag tag =val / 10 # /10得出进位 node = ListNode(int(val % 10)) # %10得出当前位的值 if result is None: result = node pre = node else: pre.next = node pre =node if V(l1): l1 = l1.next if V(l2): l2 = l2.next if tag == 1: # 判断一次进位的值,需要补上一个node(多出一位) pre.next = ListNode(1) return result
参考:
http://blog.csdn.net/nomasp/article/details/48413977 http://blog.csdn.net/amds123/article/details/68942726 -Python
相关文章推荐
- LeetCode 2. Add Two Numbers
- Leetcode[2] Add Two Numbers
- [leetcode]Add Two Numbers
- LeetCode-2. Add Two Numbers
- LeetCode-Add Two Numbers
- [LeetCode] 2. Add Two Numbers
- LeetCode #2 Add Two Numbers
- LeetCode 2. Add Two Numbers(两数相加)
- 【一天一道leetcode】 #2 Add Two Numbers
- [LeetCode] Add Two Numbers
- 【Leetcode】Add Two Numbers
- LeetCode:Add Two Numbers
- leetcode之add two numbers
- #2 LeetCode——Add Two Numbers
- leetcode 445 Add Two Numbers II C++
- LeetCode #2: Add Two Numbers
- Add Two Numbers leetcode java
- leetcode2 add two numbers
- [leetcode2] Add Two Numbers
- Add Two Numbers-LeetCode