• 7.两数相加(数存储在链表里)


    leetcode原题为第445. 两数相加 II     高位存储在链表头结点,思路:将两数都存到栈里,然后在分别出栈相加即是对应位的相加再存到链表里

    /**
     * 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) {
            Stack<Integer> stack1=new Stack();//栈的创建
            Stack<Integer> stack2=new Stack();
            ListNode sum=new ListNode(0);
            ListNode p1=l1,p2=l2,p3=sum;
            while(l1!=null){
                stack1.push(l1.val);
                l1=l1.next;
    
            }
            while(l2!=null){
                stack2.push(l2.val);//压栈
                l2=l2.next;
            }
            ListNode head=null;
            int flag=0;
            int value=0;
            while(!stack1.isEmpty() || !stack2.isEmpty() || flag!=0){
                if(!stack1.isEmpty())
                    value+=stack1.pop();//出栈
                if(!stack2.isEmpty())
                    value+=stack2.pop();
                value+=flag;
                ListNode p=new ListNode(value%10);
                flag=value/10;
                p.next=head; //注意这里相当于是head和p互换了位置,即head总指向新进来的节点
                head=p;
                value=0;
    
            }
            return head;
    
        }
    }

    leetcode原题为第2. 两数相加  思路:高位存储在链表末尾,按顺序相加,然后放到新的链表里即可

    /**
     * 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) {
            ListNode sum=new ListNode(0);
            ListNode p1=l1,p2=l2,p3=sum;
            int flag=0;
            while(p1!=null || p2!=null || flag!=0){
                int value=0;
                if(p1!=null){
                    value+=p1.val;
                    p1=p1.next;
                }
                if(p2!=null){
                    value+=p2.val;
                    p2=p2.next;
                }
                value+=flag;
                p3.next=new ListNode(value%10);//将p3当做一个指针
                p3=p3.next;
                flag=value/10;
            }
            return sum.next;
    
        }
    }
  • 相关阅读:
    PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)
    PYTHON 爬虫笔记七:Selenium库基础用法
    PYTHON 爬虫笔记六:PyQuery库基础用法
    java练习题(六)
    js练习题(三)
    js练习题(一)
    表格
    MAYA网络Z1J10928
    //绑定select下拉框change事件只执行一次
    枚举数组转换字符串
  • 原文地址:https://www.cnblogs.com/manmanchanglu/p/12584981.html
Copyright © 2020-2023  润新知