zoukankan      html  css  js  c++  java
  • Add Two Numbers

    You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first 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.

    Follow up:
    What if you cannot modify the input lists? In other words, reversing the lists is not allowed.

    Example:

    Input: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 8 -> 0 -> 7

     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 public class Solution {
    10     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    11         Stack<Integer> list1 = new Stack<>();
    12         while(l1 != null) {
    13             list1.push(l1.val);
    14             l1 = l1.next;
    15         }
    16         
    17         Stack<Integer> list2 = new Stack<>();
    18         while(l2 != null) {
    19             list2.push(l2.val);
    20             l2 = l2.next;
    21         }
    22         
    23         ListNode current = new ListNode(-1);
    24         int carry = 0;
    25         while(!list1.isEmpty() || !list2.isEmpty() || carry == 1) {
    26             int val1 = 0, val2 = 0;
    27             if (!list1.isEmpty()) {
    28                 val1 = list1.peek();
    29                 list1.pop();
    30             }
    31             if (!list2.isEmpty()) {
    32                 val2 = list2.peek();
    33                 list2.pop();
    34             }
    35             
    36             int tempVal = val1 + val2 + carry;
    37             carry = tempVal / 10;
    38             
    39             if (current.val == -1) {
    40                 current.val = tempVal % 10;
    41             } else {
    42                 ListNode temp = new ListNode(tempVal % 10);
    43                 temp.next = current;
    44                 current = temp;
    45             }
    46         }
    47         return current;
    48     }
    49 }
  • 相关阅读:
    Spring_AOP动态代理详解(转)
    Java中spring读取配置文件的几种方法
    SpringMVC工作原理2(代码详解)
    SpringMVC工作原理1(基础机制)
    Web服务器和应用服务器简介
    WEB服务器与应用服务器解疑
    WebService基本概念及原理
    HTTP协议
    TCP、UDP协议间的区别(转)
    HTTP、TCP、UDP以及SOCKET之间的区别/联系
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/6439969.html
Copyright © 2011-2022 走看看