• leadecode 2 Add Two Numbers


    
    
    package leadcode;
    
    /**
     * 2. Add Two Numbers
     * Medium
     * 4067
     * 953
     *
     *
     * 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.
     */
    
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
    
    class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    
        }
    }
     */
    public class L2 {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            ListNode head = new ListNode(0);
            ListNode cur = head;
            int carry = 0;
            while (l1!=null || l2!=null){
                int x = (l1!=null)?l1.val:0;
                int y = (l2!=null)?l2.val:0;
                int sum = x+y+carry;
                carry = sum/10;
                cur.next = new ListNode(sum%10);
                cur = cur.next;
                if(l1!=null){
                    l1=l1.next;
                }
                if(l2!=null){
                    l2=l2.next;
                }
            }
            if(carry!=0){
                cur.next=new ListNode(carry);
            }
            return head.next;
        }
        
    
        public static int[] stringToIntegerArray(String input) {
            input = input.trim();
            input = input.substring(1, input.length() - 1);
            if (input.length() == 0) {
                return new int[0];
            }
    
            String[] parts = input.split(",");
            int[] output = new int[parts.length];
            for(int index = 0; index < parts.length; index++) {
                String part = parts[index].trim();
                output[index] = Integer.parseInt(part);
            }
            return output;
        }
    
        public static ListNode stringToListNode(String input) {
            // Generate array from the input
            int[] nodeValues = stringToIntegerArray(input);
    
            // Now convert that list into linked list
            ListNode dummyRoot = new ListNode(0);
            ListNode ptr = dummyRoot;
            for(int item : nodeValues) {
                ptr.next = new ListNode(item);
                ptr = ptr.next;
            }
            return dummyRoot.next;
        }
    
        public static String listNodeToString(ListNode node) {
            if (node == null) {
                return "[]";
            }
    
            String result = "";
            while (node != null) {
                result += Integer.toString(node.val) + ", ";
                node = node.next;
            }
            return "[" + result.substring(0, result.length() - 2) + "]";
        }
    
        public static void main(String[] args) throws IOException {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            String line;
            while ((line = in.readLine()) != null) {
                ListNode l1 = stringToListNode(line);
                line = in.readLine();
                ListNode l2 = stringToListNode(line);
    
                ListNode ret = new L2().addTwoNumbers(l1, l2);
    
                String out = listNodeToString(ret);
    
                System.out.print(out);
            }
        }
    }
    
    class ListNode {
        int val;
        ListNode next;
        ListNode(int x) {
            val = x;
        }
    }

    [CareerCup] 2.5 Add Two Numbers 两个数字相加

    Suppose the digits are stored in forward order. Repeat the above problem.
    EXAMPLE
    Input: (6 -> 1 -> 7) + (2 -> 9 -> 5).That is, 617 + 295.
    Output: 9 -> 1 -> 2.That is, 912.

  • 相关阅读:
    @override报错
    idea快捷键
    java中getAttribute与getParameter的区别
    localStorage基于浏览器的本地存储
    js画布组件(<canvas></canvas>)
    easyui
    关于Bootstrap
    使用layUI美化的登录功能
    EXT JS
    ★一些文章链接
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/10038077.html
Copyright © 2020-2023  润新知