zoukankan      html  css  js  c++  java
  • LeetCode 2. Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    Example:

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8
    Explanation: 342 + 465 = 807.

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) { val = x; }
     7  * }
     8  */
     9 class Solution {
    10     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    11         ListNode first = new ListNode(-1);//指向结果list的头结点
    12         ListNode iter = first;
    13         int addOne = 0;
    14 
    15         while (l1.val < 0) l1 = l1.next;
    16         while (l2.val < 0) l2 = l2.next;
    17 
    18         while (l1 != null && l2 != null) {
    19             int val = l1.val + l2.val + addOne;
    20             addOne = val / 10;//相加的进位
    21             val %= 10;
    22             ListNode listNode = new ListNode(val);
    23             listNode.next = null;
    24             iter.next = listNode;
    25 
    26             l1 = l1.next;
    27             l2 = l2.next;
    28             iter = iter.next;
    29         }
    30         if (addOne != 0 && l1 == null && l2 == null){
    31             ListNode listNode = new ListNode(addOne);
    32             listNode.next = null;
    33             iter.next = listNode;
    34         }
    35 
    36         if (l1 != null) {
    37             l1.val += addOne;
    38             iter.next = l1;
    39             while (l1.val / 10 > 0 && l1 != null) {
    40                 addOne = l1.val / 10;
    41                 l1.val %= 10;
    42                 if (l1.next == null){
    43                     ListNode listNode = new ListNode(addOne);
    44                     listNode.next = null;
    45                     l1.next = listNode;
    46                     break;
    47                 }
    48                 l1 = l1.next;
    49                 l1.val += addOne;
    50             }
    51         }
    52 
    53         if (l2 != null) {
    54             l2.val += addOne;
    55             iter.next = l2;
    56 
    57             while (l2.val / 10 > 0 && l2 != null) {
    58                 addOne = l2.val / 10;
    59                 l2.val %= 10;
    60                 if (l2.next == null){
    61                     ListNode listNode = new ListNode(addOne);
    62                     listNode.next = null;
    63                     l2.next = listNode;
    64                     break;
    65                 }
    66                 l2 = l2.next;
    67                 l2.val += addOne;
    68             }
    69         }
    70 
    71         // 输出结果
    72 //        while (first != null) {
    73 //            System.out.print(first.val + "->");
    74 //            first = first.next;
    75 //        }
    76         return first.next;//null
    77     }
    78 }
  • 相关阅读:
    MySQL数据库的主从同步
    学习Java必看的Java书籍(高清中文最新版附下载链接)
    servlet重点知识总结
    JUnit & JMockit单元测试
    mongodb重点知识总结
    Quartz学习总结
    IDEA使用总结
    bat脚本知识总结
    linux shell脚本相关知识
    SpringMVC重点知识总结
  • 原文地址:https://www.cnblogs.com/yfs123456/p/10909168.html
Copyright © 2011-2022 走看看