zoukankan      html  css  js  c++  java
  • [LeetCode] 445. 两数相加 II

    链表形式的大数相加,没什么难的

    题目要求不能修改原链表。那就把两个链表遍历一遍,把数取出来放到stack里,再进行相加

    或者利用递归?(不过也是一样的,自己构建的栈只是换成了递归栈)

    class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            Stack<Integer> a = new Stack<>();
            Stack<Integer> b = new Stack<>();
    
            while (l1 != null) {
                a.push(l1.val);
                l1 = l1.next;
            }
    
            while (l2 != null) {
                b.push(l2.val);
                l2 = l2.next;
            }
    
            ListNode last = new ListNode();
            ListNode head = null;
            int c = 0;
            while (!a.empty()&&!b.empty()) {
                last.val = (c + a.peek() + b.peek()) % 10;
                c = (c + a.peek() + b.peek()) / 10;
    
                head = new ListNode();
                head.next = last;
                last = head;
    
                a.pop();
                b.pop();
            }
    
            while (!a.empty()) {
                last.val = (c + a.peek()) % 10;
                c = (c + a.peek()) / 10;
    
                head = new ListNode();
                head.next = last;
                last = head;
    
                a.pop();
            }
    
            while (!b.empty()) {
                last.val = (c + b.peek()) % 10;
                c = (c + b.peek()) / 10;
    
                head = new ListNode();
                head.next = last;
                last = head;
    
                b.pop();
            }
    
            if (c != 0) {
                last.val = c;
                head = new ListNode();
                head.next = last;
            }
    
            return head.next;
        }
    }
    
  • 相关阅读:
    1065 01字符串
    poj 1321 棋盘问题
    0608模拟算法试题
    唯一的雪花
    2969 角谷猜想
    0607枚举算法试题
    3162 抄书问题(划分dp)
    8782:乘积最大(划分dp)
    2985:数字组合
    3531:判断整除
  • 原文地址:https://www.cnblogs.com/acbingo/p/14885009.html
Copyright © 2011-2022 走看看