题目
给定两个链表,输出两个链表对应元素的和,返回结果链表
描述
举例说明
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
Java代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
* Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode tmp = new ListNode(0); ListNode res = tmp; int x = 0; int sum; while(l1 != null || l2 != null || x != 0) { sum = x + (l1 != null ? l1.val : 0) + (l2 != null ? l2.val : 0); x = sum / 10; sum = sum % 10; tmp.next = new ListNode(sum); l1 = l1 != null ? l1.next : null; l2 = l2 != null ? l2.next : null; tmp = tmp.next; } return res.next; } }
|
Python代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
class (object): def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ tmp = ListNode(0) result = tmp x = 0; while(x or l1 or l2): y1 = l1.val if l1 else 0 y2 = l2.val if l2 else 0 sum = (y1+y2+x)%10 x = (y1+y2+x)/10 result.next = ListNode(sum) result = result.next l1 = l1.next if l1 else None l2 = l2.next if l2 else None return tmp.next
|
C++代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode tmp(0); struct ListNode *result = &tmp; int x = 0; int sum; while(l1 || l2 || x){ sum = x+(l1?l1->val:0)+(l2?l2->val:0); x = sum/10; sum = sum%10; result->next = new ListNode(sum); result = result->next; l1 = l1 ? l1->next: NULL; l2 = l2 ? l2->next: NULL; } return tmp.next; } };
|
近期评论