leetcode-445. Add Two Numbers II

126 篇文章 0 订阅

leetcode-445. Add Two Numbers II

题目:

You are given two linked lists representing two non-negative numbers. 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.

2. Add Two Numbers

的后继题目,只是把单向链表倒过来,因为是刚出的题目,暂时我还没看到特别好的做法,典型的做法就是用一个栈来保存然后在弹出。这样空间和时间复杂度都是O(n)。以后如果有什么特别好的方法在修改。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        Stack<Integer> sta1 = new Stack<Integer>();
        Stack<Integer> sta2 = new Stack<Integer>();
        Stack<Integer> sta = new Stack<Integer>();
        while(l1!=null) {
            sta1.push(l1.val);
            l1 = l1.next;
        }
        while(l2!=null) {
            sta2.push(l2.val);
            l2 = l2.next;
        }
        int c = 0;
        while(!sta1.isEmpty() && !sta2.isEmpty()){
            int sum = sta1.pop()+sta2.pop()+c;
            c = sum/10;
            sum = sum%10;
            sta.push(sum);
        }
        if(!sta2.isEmpty()) sta1 = sta2;
        while(!sta1.isEmpty()){
            int sum = sta1.pop()+c;
            c = sum/10;
            sum = sum%10;
            sta.push(sum);
        }
        if(c==1) sta.push(1);
        ListNode dump = new ListNode(0);
        ListNode ret = dump;
        while(!sta.isEmpty()){
            dump.next = new ListNode((int)sta.pop());
            dump = dump.next;
        }
        return ret.next;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值