用链表反向代表数字的每一位,求和。
开始蠢到用数字代表每个表然后加一起,最后再转换成链表,后来发现这么出题就是在解高精度呀!从链表的开始就是个位,之后每位记录下进位就可以了。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *H = new ListNode(0);
ListNode *pre = H;
int f = 0, cnt = 10;
while(1){
if(l1){
f += l1->val;
l1 = l1->next;
}
if(l2){
f += l2->val;
l2 = l2->next;
}
ListNode *N = new ListNode(f%10);
pre->next = N;
f /= 10;
pre = N;
if(!l1 && !l2 && !f)break; //两个表都空并且无进位时终止
}
return H->next;
}
};