几天没做LeetCode,现在题目总数已经直逼700了....这道题为链表,本科数据结构接触过一些后,已经好久没练过了。 基本操作都快忘了。这道题是将两个链表中的数相加,当数大于10时,需向前“进位”。
/**
* 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 node(0);
ListNode *p = &node;
int cnt = 0;
while(l1 || l2)
{
int sum = (l1 ? l1->val : 0) + (l2 ?l2->val : 0) + cnt;
cnt = sum/10;
p->next = new ListNode(sum%10);
p = p->next;
if(l1) l1 = l1->next;
if(l2) l2 = l2->next;
}
if(cnt) p->next = new ListNode(cnt);
return node.next;
}
};