LeetCode 2 两数相加 发表于 2018-12-25 分类于 algorithm 本文字数: 1.1k 阅读时长 ≈ 1 分钟 1234567891011给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807 建新链表存储两个链表节点的和,处理一下进位就好了,一位数组,进位只能为0或1 1234567891011121314151617181920212223242526272829303132/** * 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) { ListNode *l = new ListNode(0); ListNode *p, *p1, *p2; p = l; p1 = l1; p2 = l2; l->next = NULL; int last = 0; while(p1||p2||last) { int sum = (p1?p1->val:0) + (p2?p2->val:0); p->val = ((sum + last)%10); last = (sum+last)/10; p1 = p1?p1->next:NULL; p2 = p2?p2->next:NULL; if(p1||p2||last) { p->next = new ListNode(0); p = p->next; } } return l; }};