力扣02需求如下:
- 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的, 并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
- 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
1.首先把链表类,和输出方法建立起来
package it.LeeCode;
class ListNode{
int val;
ListNode next;
ListNode(int x){
val = x;
}
public void add(int newval) {
ListNode newNode = new ListNode(newval);
if(this.next == null)
this.next = newNode;
else
this.next.add(newval);
}
public void print() {
System.out.print(this.val);
if(this.next != null)
{
System.out.print("-->");
this.next.print();
}
}
}
接下来写实现的方法
public class LeeCode2TwoSum {
public static void main(String[] args) {
ListNode l1 = new ListNode(2);
l1.add(4);
l1.add(3);
ListNode l2 = new ListNode(5);
l2.add(6);
l2.add(4);
LeeCode2TwoSum lc = new LeeCode2TwoSum();
Solution s =lc.new Solution();
ListNode result = s.addTwoNumbers(l1, l2);
result.print();
}
class Solution{
ListNode addTwoNumbers(ListNode l1, ListNode l2){
ListNode root = new ListNode(0);
ListNode cousor = root;
int carry = 0;
while(l1!=null || l2!=null || carry!=0){
int l1val = l1 == null ? 0: l1.val ;
int l2val = l2 == null ? 0: l2.val ;
int nval = l1val + l2val + carry;
carry = nval/10;
nval = nval%10;
ListNode temp = new ListNode(nval);
cousor.next = temp;
cousor = temp;
if(l1!=null) l1 = l1.next;
if(l2!=null)l2 = l2.next;
}
return root.next;
}
}
}