zoukankan      html  css  js  c++  java
  • 【LeetCode2】Add Two Numbers★★

    题目描述:

    解题思路:

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

      如(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  }

    程序结果:

  • 相关阅读:
    结对-结对编项目作业名称-开发环境搭建过程
    课后作业-阅读任务-阅读提问-3
    团队-象棋游戏-项目进度
    结对-五子棋游戏-测试过程
    课后作业-阅读任务-阅读提问2
    201501006-构建之法:现代软件工程-阅读笔记
    结对编程-五子棋游戏-开发过程
    象棋游戏,代码规范
    结编程队-五子棋游戏-项目进度
    《个人-GIT使用方法》
  • 原文地址:https://www.cnblogs.com/zhangboy/p/6464162.html
Copyright © 2011-2022 走看看