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 }
  • 相关阅读:
    Java基础笔记(九)—— 流程控制
    Java基础笔记(七)—— 成员变量、静态变量、局部变量
    Java基础笔记(六)——进制表示、ASCII码和Unicode编码
    Java基础笔记(五)——数据类型转换
    Java基础笔记(四)——命名规则、数据类型
    java基础笔记(三)——main方法
    Java基础笔记(二)——配置环境变量
    原始生物 题解
    Ant Trip 题解
    叶子清除计划【第五周】 题解
  • 原文地址:https://www.cnblogs.com/yfs123456/p/10909168.html
Copyright © 2011-2022 走看看