day15 leetcode-hot100-28(链表7)
2. 两数相加 - 力扣(LeetCode)
1.模拟
思路
最核心的一点就是将两个链表模拟为等长,不足的假设为0;
(1)设置一个新链表newl来代表相加结果。
(2)链表1与链表2相加,具体方式为sum=n1+n2+jin(进位),该位置的值为sum%10,jin=sum/10.
(3)判断两个链表的下一个节点是否为空,不为空就向下继续走。
(4)最后如果进位不为0,则需要再增加一个节点,节点值为jin(进位值)
具体代码
/*** 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 init;ListNode newl=new ListNode(-1);init=newl;int jin=0;int sum=0;while(l1!=null || l2!=null){int n1 = l1!=null ? l1.val:0;int n2 = l2!=null ? l2.val:0;sum = (jin+n1+n2)%10;jin = (jin+n1+n2)/10;newl.next=new ListNode(sum);newl=newl.next;if(l1!=null){l1=l1.next;}if(l2!=null){l2=l2.next;}}if(jin>0){newl.next=new ListNode(jin);}return init.next;}
}