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;
}
}
总感觉的自己可能写的麻烦了点,但是也不知道怎么去简化。
/**
* 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;
}
}
相关文章推荐
- LintCode_167_链表求和
- LintCode_167_链表求和
- lintcode,167,链表求和
- LintCode之167 链表求和
- 167. 链表求和
- lintcode 167 链表求和
- Linkcode 167 链表求和
- 容易_167_链表求和(3)
- 【LintCode-167】链表求和(Java实现)
- python_lintcode_167链表求和
- [Lintcode] #167 链表求和
- lintcode-167-链表求和
- 167链表求和
- 算法训练 链表数据求和操作
- 链表求和
- 链表求和II
- 链表求和
- 链式A+B有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListN
- lintcode-221-链表求和 II
- CCI 2.5 链表整数求和