给两个链表:Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
第一道链表题,顺便复习一下链表知识,链表题目添加一个头结点head,返回的链表从head.next开始,这样不用特殊处理头结点,还有一个当前节点p指针。
经验总结:想好思路在动手,没思路的话就按最简单的方法边想边写,否则会浪费很多时间debug。。
上代码:
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode list = new ListNode(0);//建立一个头结点 这样不用特殊处理
ListNode p = list; //定义当前走的节点
int carry = 0;
while (l1 != null || l2 != null) {
int sum = 0;
if (l1 != null) {
sum += l1.val;
l1 = l1.next;
}
if (l2 != null) {
sum += l2.val;
l2 = l2.next;
}
int add = sum + carry;
p.next = new ListNode(add % 10); //定义头结点之后 这里不用特殊处理
carry = add / 10;
p = p.next;
}
if (carry > 0) {
p.next = new ListNode(carry);
}
return list.next;
}
}