leetcode 2. 两数相加
Posted 巴蜀小小生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 2. 两数相加相关的知识,希望对你有一定的参考价值。
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { 12 int carry = 0; 13 ListNode q(0), *p = &q; //不是很理解这里的意思,对指针理解的不是很透彻 14 while(l1 || l2 || carry){ 15 int sum = (l1?l1->val:0)+(l2?l2->val:0) + carry; 16 p->next = new ListNode(sum%10); 17 p = p->next; 18 carry = sum/10; 19 l1 = l1?l1->next:NULL; 20 l2 = l2?l2->next:NULL; 21 } 22 return q.next; 23 } 24 };
当做经验记下来吧, 涉及到指针的时候,就用LIstNode p(0), *q = &p;
return p.next;
以上是关于leetcode 2. 两数相加的主要内容,如果未能解决你的问题,请参考以下文章