力扣两数相加
目录
力扣——两数相加
题目链接:
题目描述:
思路:
关键是进位
可能有两种情况:
- a+b>9
- a+b+进位>9
所以,需要一个变量表示进位的数字,两数之和应该是 sum=a+b+进位
每一位的数字是:sum%10
每一位的进位是:sum/10
这里需要 新建节点 ,所以我们可以在新建节点的时候把val设置好
这样,第一个节点就不是真正的头节点,下一个才是
实现代码:
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = new ListNode();
ListNode cur = head;
int carry = 0;
while(l1 != null || l2 != null){
int num1 = l1 != null ? l1.val : 0;
int num2 = l2 != null ? l2.val : 0;
int s = num1 + num2 + carry;
carry = s/10;
s = s%10;
cur.next = new ListNode(s);
cur = cur.next;
l1 = l1 == null ? l1 : l1.next;
l2 = l2 == null ? l2 : l2.next;
}
if(carry != 0){
cur.next = new ListNode(carry);
}
return head.next;
}
}