leetcode 题解 2. Add Two Numbers
2016-09-30 10:24
323 查看
leetcode的第二题,这一题实际上已经将问题做了简化,链表已经进行了逆序,因此只要从后向前处理即可。
这里有几点需要注意的问题:
两个数相加后结果可能大于10,因此需要主要进位的问题。
两个链表的长度可能不同,若一个链表为空,则将其值设为0。
若最后的结果仍然大于10,则还要再进一位。
直接将结果贴出来。
贴一段java代码,简洁很多,上面的C代码过于复杂了。
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
ListNode list_result = new ListNode(-1);
ListNode list_pointer = list_result;
int sum = 0;
while(l1!=null||l2!=null){
if(l1!=null){
sum += l1.val;
l1 = l1.next;
}
if(l2!=null){
sum += l2.val;
l2 = l2.next;
}
list_pointer.next = new ListNode(sum%10);
sum = sum/10;
list_pointer = list_pointer.next;
}
if(1==sum) list_pointer.next = new ListNode(1);
return list_result.next;
}
}
这里有几点需要注意的问题:
两个数相加后结果可能大于10,因此需要主要进位的问题。
两个链表的长度可能不同,若一个链表为空,则将其值设为0。
若最后的结果仍然大于10,则还要再进一位。
直接将结果贴出来。
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { if(l1==NULL) return l2; if(l2==NULL) return l1; int add = 0; int sum = 0; int tempSum = 0; int l1val = 0; int l2val = 0; struct ListNode* result = (struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* cur = result; struct ListNode* nxt; struct ListNode* pre; while(l1!=NULL||l2!=NULL){ if(l1) l1val = l1->val; else l1val = 0; if(l2) l2val = l2->val; else l2val = 0; tempSum = l1val + l2val + add; sum = tempSum%10; add = tempSum/10; cur->val = sum; if(l1!=NULL) l1 = l1->next; if(l2!=NULL) l2 = l2->next; nxt = (struct ListNode*)malloc(sizeof(struct ListNode)); cur->next = nxt; pre = cur; cur = nxt; } if(add!=0){ cur->val = add; pre = cur; } pre->next = NULL; return result; }
贴一段java代码,简洁很多,上面的C代码过于复杂了。
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1==null) return l2;
if(l2==null) return l1;
ListNode list_result = new ListNode(-1);
ListNode list_pointer = list_result;
int sum = 0;
while(l1!=null||l2!=null){
if(l1!=null){
sum += l1.val;
l1 = l1.next;
}
if(l2!=null){
sum += l2.val;
l2 = l2.next;
}
list_pointer.next = new ListNode(sum%10);
sum = sum/10;
list_pointer = list_pointer.next;
}
if(1==sum) list_pointer.next = new ListNode(1);
return list_result.next;
}
}
相关文章推荐
- LeetCode题解-2-Add Two Numbers
- 题解——Leetcode 2. Add Two Numbers 难度:Medium
- LeetCode题解--2-Add Two Numbers
- LeetCode题解:Add Two Numbers
- [Leetcode题解]002 Add Two Numbers
- leetcode2 Add Two Numbers题解
- LeetCode题解(Golang实现)--Add Two Numbers
- LeetCode题解:2. Add Two Numbers
- leetcode AddTwoNumbers 题解
- LeetCode题解:Add Two Numbers
- 【题解】【链表】【Leetcode】Add Two Numbers
- LeetCode题解 —— 2. Add Two Numbers
- LeetCode Add Two Numbers题解
- LeetCode题解(2)-- Add Two Numbers
- LeetCode题解——Add Two Numbers
- leetcode题解-2. Add Two Numbers
- LeetCode题解 #2 Add Two Numbers
- 2. Add Two Numbers LeetCode题解
- leetcode 题解 Add Two Numbers(两个单链表求和)
- [LeetCode]题解(python):002-Add Two Numbers