题目描述:

解题思路:

  给定两个链表(代表两个非负数),数字的各位以倒序存储,将两个代表数字的链表想加获得一个新的链表(代表两数之和)。

  如(2->4->3)(342) + (5->6->4)(465) = (7->0->8)(807)

  

  设两个进行加法运算的链表分别为l1,l2, 结果链表为resultList,以l1[i] 表示链表l1的第i个节点的值,l2[i] 表示链表l2的第i个节点的值,carry[i]表示l[i]位相加产生的进位符。

  则有以下结论:

  当链表l1和l2不同时为空时:

  resultList[i] = (l1[i] + l2[i] + carry[i-1]) % 10

  carry[i] = (l1[i] + l2[i] + carry[i-1]) / 10

  且carry[0] = 0;

Java代码:

 1 //类public class LeetCode2为测试代码
 2 public class LeetCode2{
 3      public static void main(String[] args) {
 4          ListNode l1=new ListNode(2),l11=new ListNode(4),l12=new ListNode(3);
 5          l1.next=l11;
 6          l11.next=l12;
 7          System.out.print("Input:["+l1.val+","+l11.val+","+l12.val+"]");
 8          ListNode l2=new ListNode(5),l21=new ListNode(6),l22=new ListNode(4);
 9          l2.next=l21;
10          l21.next=l22;
11          System.out.println(",["+l2.val+","+l21.val+","+l22.val+"]");
12          ListNode list=new Solution().addTwoNumbers(l1, l2);
13          if(list!=null)
14              System.out.print("output:["+list.val);
15          while(list.next!=null){
16              System.out.print(","+list.next.val);
17              list.next=list.next.next;
18           }
19          System.out.println("]");
20      }
21 }
22 class Solution {
23     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
24         ListNode resultList=new ListNode(0);
25             ListNode p1=l1,p2=l2,p3=resultList;
26             int carry=0;
27             while(p1!=null||p2!=null){
28                 if(p1!=null){
29                     carry+=p1.val;
30                     p1=p1.next;
31                 }
32                 if(p2!=null){
33                     carry+=p2.val;
34                     p2=p2.next;
35                 }
36                 p3.next=new ListNode(carry%10);
37                 p3=p3.next;
38                 carry/=10;
39             }
40             if(carry==1)
41                 p3.next=new ListNode(1);
42             return resultList.next;
43     }
44 }
45 class ListNode {
46    int val;
47    ListNode next;
48    ListNode(int x) { val = x; }
49  }

程序结果:

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!