题目:leetcode 002
解题思路:链表题,要注意条件判断 ①t == 0的判断是为了5+5的情况,若无此判断 输出为0。 ②全为且,是要考虑到两个链表可能长度不一。若其中一个链表完成遍历,另外一个还有剩余仍要继续加。
/**
* 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 *p = new ListNode(0);
ListNode *c = p;
int t = 0;
while(1){
if(l1 != NULL){
t += l1->val;
l1 = l1->next;
}
if(l2 != NULL){
t += l2->val;
l2 = l2->next;
}
c->val = t % 10;
t = t / 10;
if(l1 == NULL && l2 == NULL && t == 0)
break;
c->next = new ListNode(0);
c = c->next;
}
return p;
}
};
注意特殊情况的考虑,某些边界情况要想到。在链表操作中,要尽量采用时间复杂度低的算法,提高ac率。