美文网首页
两数相加

两数相加

作者: Allen的光影天地 | 来源:发表于2018-08-16 14:24 被阅读2次

    题目

    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.

    解答

    package leetcode;
    /**
     * 两数相加题 后添加的数字先出来计算,计算结束后先被压在栈底
     * 如果要想像原题那样,我们需要用队列来实现
     */
    
    import Algorithms_again.Stack;
    
    
    public class TwoNumSum {
        Stack<Integer> p = new Stack<>();
        Stack<Integer> q = new Stack<>();
    
        public static void main(String[] args) {
            TwoNumSum t = new TwoNumSum(8,8,7,7);
            for (Stack<Integer> s = t.plus(); ! s.isEmpty() ; ) {
                System.out.print(s.pop());
            }
        }
    
        public Stack<Integer> plus(){
            // 第一步 初始了和
            Stack<Integer> add = new Stack<>();
            int carry = 0;
            while(!p.isEmpty() || !q.isEmpty() ){
                int a = (p.isEmpty())? 0 : p.pop(); // 取出两个数,并处理两个不同位数
                int b = (q.isEmpty())? 0 : q.pop();
                int c = a + b + carry;
                carry = c/10;
                add.push(c % 10); // c/10取余
            }
            if (carry > 0) add.push(carry);
            return add;
        }
    
        public TwoNumSum(int a, int b, int c, int d) {
            p.push(a);
            p.push(b);
            q.push(c);
            q.push(d);
        }
    }
    

    相关文章

      网友评论

          本文标题:两数相加

          本文链接:https://www.haomeiwen.com/subject/yvhnbftx.html