LeetCode_2 两数相加(Java版)


逆序链表,逆序输出
直接相加即可
同时遍历两个链表,短的结束后取0代替,
定义sum = n1 + n2 + temp;
temp = sum / 10 ;【只会取到0和1】
赋值时,直接用sum%10,
最后判断temp是否大于0,大于0表示要进位,最后要再new一个节点。并赋值1
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = null;
ListNode point = null;
int temp = 0;
while(l1 != null || l2 != null){
//短的链表空了,就取0,不影响计算
int n1 = l1 == null ? 0:l1.val;
int n2 = l2 == null ? 0:l2.val;
int sum = n1 + n2 + temp;
if (head == null){//第一次,创建头节点
head = point = new ListNode(sum % 10);
}else{//赋值,向下遍历
point.next = new ListNode(sum % 10);
point = point.next;
}
temp = sum / 10;//小于10,结果时0;大于10,结果是1;
//不空的,向下遍历
if (l1 != null)
l1 = l1.next;
if (l2 != null)
l2 = l2.next;
}
//最后一位,大于10,进1
if (temp > 0)
point.next = new ListNode(temp);
return head;
}
}
浙公网安备 33010602011771号