您的位置:首页 > 其它

167 - 链表求和

2017-04-20 09:02 246 查看
4.20

总感觉的自己可能写的麻烦了点,但是也不知道怎么去简化。

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param l1: the first list
* @param l2: the second list
* @return: the sum list of l1 and l2
*/
public ListNode addLists(ListNode l1, ListNode l2) {
// write your code here
if(l1 == null){
return l2;
}
if(l2 == null){
return l1;
}
int sum1 = l1.val +l2.val;
int flag = sum1/10;
sum1 = sum1%10;
ListNode tmp = new ListNode(sum1);
tmp.next = null;
ListNode head = tmp;
l1 = l1.next;
l2 = l2.next;
while(l1 != null && l2!= null){
int sum = l1.val + l2.val +flag;
flag = sum/10;
sum = sum%10;
ListNode newNode = new ListNode(sum);
newNode.next = tmp.next;
tmp.next = newNode;
tmp =tmp.next;
l1 = l1.next;
l2 = l2.next;

}
while(l1 != null){
int sum = l1.val+flag;
flag = sum/10;
sum = sum%10;
ListNode newNode = new ListNode(sum);
newNode.next = tmp.next;
tmp.next = newNode;
tmp =tmp.next;
l1 = l1.next;
}
while(l2 != null){
int sum = l2.val +flag;
flag = sum/10;
sum = sum%10;
ListNode newNode = new ListNode(sum);
newNode.next = tmp.next;
tmp.next = newNode;
tmp =tmp.next;
l2 = l2.next;
}
if(flag == 1){
ListNode newNode = new ListNode(1);
newNode.next = tmp.next;
tmp.next = newNode;
tmp = tmp.next;
}
return head;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: