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
题目说有两个链表分别存储了两个非负整数,链表把数是倒着存的,链表的每个节点只存放一位数字,让你把这两个数加起来然后以题目中的链表形式返回。
举个例子:有两个非负整数342和465,加起来是807,那么在链表中就是2->4->3,5->6->4,返回的807的链表应该是7->0->8。
这个题思路上没难度,就是遍历两个链表,数位分别相加,唯一要注意的地方就是两个数字相加大于10要进位的问题。
代码如下:
1 class Solution{ 2 public: 3 ListNode* addToNumbers(ListNode* l1, ListNode* l2){ 4 ListNode* result_list = new ListNode(0); 5 ListNode* cursor_pointer = result_list; 6 int carry_num = 0; 7 while (true){ 8 if (l1 != NULL){ 9 carry_num += l1->val; 10 l1 = l1->next; 11 } 12 if (l2 != NULL){ 13 carry_num += l2->val; 14 l2 = l2->next; 15 } 16 cursor_pointer->val = carry_num % 10; 17 carry_num /= 10; 18 if (l1 != NULL || l2 != NULL || carry_num > 0){ 19 cursor_pointer = (cursor_pointer->next = new ListNode(0)); 20 } 21 else{ 22 break; 23 } 24 } 25 return result_list; 26 } 27 };
时间: 2024-10-07 04:13:45