题目连接:
https://leetcode.com/problems/add-two-numbers/
题目大意:
就是链表表示的两个数进行加法
大致思路:
首先注意进位的问题,然后就是链表的长度不一样的问题,两个长度分别为x, y的数相加,最多能得到的数长度是max(x, y) + 1
写的时候注意一下就好了
代码如下:
Result : Accepted Time : 36 ms
/**
* 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 *ret = new ListNode(-1);
ListNode* ans = ret;
int last = 0;
do{
if(l1 != NULL) last += l1->val, l1 = l1->next;
if(l2 != NULL) last += l2->val, l2 = l2->next;
ret->val = last % 10;
last = last / 10;
if(l1 != NULL || l2 != NULL || last == 1){
ret->next = new ListNode(-1);
ret = ret->next;
}
}while(l1 != NULL || l2 != NULL || last == 1);
return ans;
}
};