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

    脑壳铁了,竟然想不起来应该怎么把这一位的进位加到下一位上。

    小技巧:对于链表问题,返回结果为头结点时,通常需要先初始化一个预先指针 pre,该指针的下一个节点指向真正的头结点head。使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而会导致头指针丢失,无法返回结果。

    看了答案,可以重新新建一个链来记录两个头节点的相加值,然后指针再相应的往后遍历。

    package leetcode;
    
    /**
     * @author doyinana
     * @create 2020-04-08 21:06
     */
    public class L2 {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            ListNode pre = new ListNode(0);
            ListNode cur=pre;
            int carry=0;
            while(l1!=null||l2!=null){
                int x=l1==null?0:l1.val;
                int y=l2==null?0:l2.val;
                int sum=x+y+carry;
    
                carry=sum/10;
                sum=sum%10;
                cur.next=new ListNode(sum);
    
                cur=cur.next;
                if(l1!=null)l1=l1.next;
                if(l2!=null)l2=l2.next;
            }
            if(carry==1){
                cur.next=new ListNode(carry);
            }
            return pre.next;
        }
    }
    
    
    class ListNode{
        int val;
        ListNode next;
        ListNode(int x){
            val=x;
        }
    }

     惊了 这个也太低了

    看到更快的方法里面把/和%方法换成了减法:

    /**
     * @author doyinana
     * @create 2020-04-08 21:06
     */
    class Solution{
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            ListNode pre = new ListNode(0);
            ListNode cur=pre;
            int carry=0;
            while(l1!=null||l2!=null){
                int x=l1==null?0:l1.val;
                int y=l2==null?0:l2.val;
                int sum=x+y+carry;
                if(sum>=10){
                    sum-=10;
                    carry=1;
                }else{
                    carry=0;
                }
                cur.next=new ListNode(sum);
                cur=cur.next;
                if(l1!=null)l1=l1.next;
                if(l2!=null)l2=l2.next;
            }
            if(carry==1){
                cur.next=new ListNode(1);
            }
            return pre.next;
        }
    }
  • 相关阅读:
    飞入飞出效果
    【JSOI 2008】星球大战 Starwar
    POJ 1094 Sorting It All Out
    POJ 2728 Desert King
    【ZJOI 2008】树的统计 Count
    【SCOI 2009】生日快乐
    POJ 3580 SuperMemo
    POJ 1639 Picnic Planning
    POJ 2976 Dropping Tests
    SPOJ QTREE
  • 原文地址:https://www.cnblogs.com/doyi111/p/12662979.html
Copyright © 2011-2022 走看看