两数相加
...大约 1 分钟
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
提示:
- 每个链表中的节点数在范围
[1, 100]
内 0 <= Node.val <= 9
- 题目数据保证列表表示的数字不含前导零
代码如下:
public class P2_AddTwoNumbers{
public static void main(String[] args) {
//测试代码
Solution solution = new P2_AddTwoNumbers().new Solution();
ListNode l11=new P2_AddTwoNumbers().new ListNode(9);
ListNode l21=new P2_AddTwoNumbers().new ListNode(1);
ListNode l22=new P2_AddTwoNumbers().new ListNode(9);
ListNode l23=new P2_AddTwoNumbers().new ListNode(9);
ListNode l24=new P2_AddTwoNumbers().new ListNode(9);
ListNode l25=new P2_AddTwoNumbers().new ListNode(9);
ListNode l26=new P2_AddTwoNumbers().new ListNode(9);
ListNode l27=new P2_AddTwoNumbers().new ListNode(9);
ListNode l28=new P2_AddTwoNumbers().new ListNode(9);
ListNode l29=new P2_AddTwoNumbers().new ListNode(9);
ListNode l30=new P2_AddTwoNumbers().new ListNode(9);
l21.next=l22;
l22.next=l23;
l23.next=l24;
l24.next=l25;
l25.next=l26;
l26.next=l27;
l27.next=l28;
ListNode result = solution.addTwoNumbers(l11, l21);
while(result!=null){
System.out.println(result.val);
result=result.next;
}
}
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 result=new ListNode(-1);
ListNode temp=result;
ListNode l1Node=l1;
ListNode l2Node=l2;
int add=0;
while(l1Node!=null || l2Node!=null){
int l1NodeVal;
int l2NodeVal;
if(l1Node==null){
l1NodeVal=0;
}else{
l1NodeVal=l1Node.val;
l1Node=l1Node.next;
}
if(l2Node==null){
l2NodeVal=0;
}else{
l2NodeVal=l2Node.val;
l2Node=l2Node.next;
}
int sum=l1NodeVal+l2NodeVal+add;
int val=sum%10;
add=sum/10;
ListNode next=new ListNode(val);
temp.next=next;
temp=next;
}
if(add>0){
temp.next=new ListNode(add);
}
return result.next;
}
}
}
Powered by Waline v2.14.7