国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

leetcode 445. Add Two Numbers II(兩數(shù)相加)

這篇具有很好參考價值的文章主要介紹了leetcode 445. Add Two Numbers II(兩數(shù)相加)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

leetcode 445. Add Two Numbers II(兩數(shù)相加),leetcode,leetcode,算法

用鏈表代表2個數(shù)字,這2個數(shù)字相加的和用鏈表返回。
最高位在鏈表的head.

思路:

1.鏈表逆序

數(shù)字相加是從低位到高位的,然而鏈表中的數(shù)字是從高位指向低位。
所以涉及到鏈表的逆序。

逆序之后只需從head到tail把兩個鏈表的數(shù)字相加,再用一個int表示進位。

鏈表的逆序:
最左邊的數(shù)字逆序后應該是tail, 它的next指向null.
后面的數(shù)字每次都指向它的前一個數(shù)字。
所以用cur表示當前node, cur.next指向它前一個node,
然后cur移動到鏈表的下一節(jié)點,不停地把cur.next指向前一個node.

在把結(jié)果的數(shù)字一個一個地保存進結(jié)果的鏈表中時,
不斷地把新數(shù)字指向前一個數(shù)字,就實現(xiàn)了從低位到高位保存的效果。

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode newHead = null;
        int carry = 0;

        l1 = reverseList(l1);
        l2 = reverseList(l2);

        while(l1 != null || l2 != null || carry > 0) {
            int num1 = (l1 != null ? l1.val : 0);
            int num2 = (l2 != null ? l2.val : 0);

            int sum = num1 + num2 + carry;
            int num = sum % 10;
            carry = sum / 10;

            ListNode cur = new ListNode(num);
            cur.next = newHead;
            newHead = cur;

            l1 = (l1 != null ? l1.next : null);
            l2 = (l2 != null ? l2.next : null);
        }
        return newHead;
    }

    ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode cur = head;

        while(cur != null) {
            ListNode next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        return pre;
    }
}

leetcode 445. Add Two Numbers II(兩數(shù)相加),leetcode,leetcode,算法

2.Stack

如果不想用鏈表逆序,可以用Stack, 同樣可以達到逆序的效果,但是速度不及上面的快。文章來源地址http://www.zghlxwxcb.cn/news/detail-596737.html

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        Stack<Integer> st1 = new Stack<>();
        Stack<Integer> st2 = new Stack<>();
        ListNode res = null;
        int carry = 0;

        //相當于逆序鏈表
        while(l1 != null) {
            st1.push(l1.val);
            l1 = l1.next;
        }

        while(l2 != null) {
            st2.push(l2.val);
            l2 = l2.next;
        }

        while(!st1.empty() || !st2.empty() || carry > 0) {
            int num1 = st1.empty() ? 0 : st1.pop();
            int num2 = st2.empty() ? 0 : st2.pop();
            int sum = num1 + num2 + carry;
            int num = sum % 10;
            carry = sum / 10;

            ListNode cur = new ListNode(num);
            cur.next = res;
            res = cur;
        }

        return res;
    }

到了這里,關于leetcode 445. Add Two Numbers II(兩數(shù)相加)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • LeetCode算法題---兩數(shù)相加(二)

    LeetCode算法題---兩數(shù)相加(二)

    給你兩個?非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照?逆序?的方式存儲的,并且每個節(jié)點只能存儲?一位?數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。 你可以假設除了數(shù)字 0 之外,這兩個數(shù)都不會以 0?開頭。 示例 1: ? 示例 2: 示例

    2024年02月09日
    瀏覽(15)
  • LeetCode 算法 2.兩數(shù)相加(python版)

    LeetCode 算法 2.兩數(shù)相加(python版)

    給你兩個 非空 的鏈表,表示兩個非負的整數(shù)。 它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個節(jié)點只能存儲 一位 數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。 你可以假設除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。

    2024年01月21日
    瀏覽(18)
  • LeetCode 1. Two Sum 兩數(shù)之和

    題目描述 給定一個整數(shù)數(shù)組 nums?和一個目標值 target,請你在該數(shù)組中找出和為目標值的那?兩個?整數(shù),并返回他們的數(shù)組下標。 你可以假設每種輸入只會對應一個答案。但是,數(shù)組中同一個元素不能使用兩遍。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2

    2023年04月25日
    瀏覽(24)
  • LeetCode:2. 兩數(shù)相加

    LeetCode:2. 兩數(shù)相加

    給你兩個? 非空 ?的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照? 逆序 ?的方式存儲的,并且每個節(jié)點只能存儲? 一位 ?數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。 你可以假設除了數(shù)字 0 之外,這兩個數(shù)都不會以 0?開頭。 2. 兩數(shù)相加 - 力扣(

    2024年02月09日
    瀏覽(17)
  • LeetCode——兩數(shù)相加

    LeetCode——兩數(shù)相加

    目錄 一、兩數(shù)相加 1、題目 2、題目解讀 3、代碼 二、反轉(zhuǎn)鏈表 1、題目 ?2、題目解讀 3、代碼? 三、兩數(shù)相加 II 1、題目 2、題目解讀 3、代碼 反轉(zhuǎn)鏈表再進行計算 借助棧 2. 兩數(shù)相加 - 力扣(Leetcode) 給你兩個? 非空 ?的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照

    2024年02月12日
    瀏覽(22)
  • 【刷題】 leetcode 2 .兩數(shù)相加

    【刷題】 leetcode 2 .兩數(shù)相加

    我們來看看題目,,,, 往往困難的題只需要 簡單的敘述 。 好像只用找到兩個數(shù),整合成一個鏈表就可以。應該 首先 我最快想到思路是 分別根據(jù)兩個鏈表求出對應數(shù) 然后加一起 ,得到和 再把和拆分儲存到鏈表里 為此我們需要手撕一下鏈表頭插。 一頓操作猛如虎,一看

    2024年01月19日
    瀏覽(18)
  • 兩數(shù)相加 LeetCode熱題100

    給你兩個 非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個節(jié)點只能存儲 一位 數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。 你可以假設除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。 建立鏈表l3,同時遍歷兩個鏈表

    2024年02月14日
    瀏覽(16)
  • leetcode 2. 兩數(shù)相加(java)

    leetcode 2. 兩數(shù)相加(java)

    難度 - 中等 leetcode 2. 兩數(shù)相加 給你兩個 非空 的鏈表,表示兩個非負的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲的,并且每個節(jié)點只能存儲 一位 數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈表。 你可以假設除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。

    2024年02月09日
    瀏覽(22)
  • LeetCode-C#-0002.兩數(shù)相加

    該題目來源于LeetCode 如有侵權(quán),立馬刪除。 解法不唯一,如有新解法可一同討論。 0002兩數(shù)相加 給你兩個非空的鏈表,表示兩個非負的整數(shù),它們每位數(shù)字都是按照逆序的方式存儲的,并且每個節(jié)點只能存儲一位數(shù)字。 請你將兩個數(shù)相加,并以相同形式返回一個表示和的鏈

    2024年02月08日
    瀏覽(21)
  • LeetCode | 兩數(shù)相加 C語言

    LeetCode | 兩數(shù)相加 C語言

    Problem: 2. 兩數(shù)相加 主要是一一相加和逆序的方式存儲 先說逆序儲存,看下圖 我們先聲明出指針p和指針q,還有指針head(主要用于return上而已),然后進行一系列操作,之后,p = q,之后的操作就是對q進行,至于p,只做一個動作,p = q 至于相加嘛!好說,將對應的兩個數(shù)加起

    2024年02月22日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包