兩數之和

2021-02-25 大海我來了

難度:中等
來源:2. 兩數之和

給你兩個 非空 的鍊表,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的,並且每個節點只能存儲 一位 數字。

請你將兩個數相加,並以相同形式返回一個表示和的鍊表。

你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例 1:

輸入:l1 = [2,4,3], l2 = [5,6,4]
輸出:[7,0,8]
解釋:342 + 465 = 807.

示例 2:

輸入:l1 = [0], l2 = [0]
輸出:[0]

示例 3:

輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
輸出:[8,9,9,9,0,0,0,1]

提示:

每個鍊表中的節點數在範圍 [1, 100] 內
0 <= Node.val <= 9
題目數據保證列表表示的數字不含前導零

思路:

考慮優化:我們都知道的第一點是加法運算是有進位的,所以使用 carry 來保存進位的結果;臨界值判斷:當兩個鍊表長度不一樣的時候,總會有 有值 和 null 相加的情況,所以需要處理下;

題解:

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * 
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    let sum = new ListNode('0'), 
        head = sum,
        carry = 0;

    while (carry || l1 || l2) {
        let val1 = l1 ? l1.val : 0
        let val2 = l2 ? l2.val : 0
        let r1 = val1 + val2 + carry
        carry = r1 >= 10 ? 1 : 0
        sum.next = new ListNode(r1 % 10)
        sum = sum.next
        if (l1) l1 = l1.next
        if (l2) l2 = l2.next
    }
    return head.next
};

相關焦點

  • 哈希表:解決了兩數之和,那麼能解決三數之和麼?
    ❝用哈希表解決了兩數之和,那麼三數之和呢?❞第15題. 三數之和給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
  • 每天一道LeetCode算法題——兩數之和
    兩個數之和?兩個兩個一組,雙層循環遍歷所有可能,判斷之和是否相等,即可找出答案。coding偷懶,選擇了JavaScript執行用時:172 ms,內存消耗:34.6 MB。交流學習自己用笨方法解題後又去看了下官方給的java題解。
  • LeetCode-16.最接近的三數之和(3Sum Closest)
    最接近的三數之和給定一個包括 n 個整數的數組 nums 和 一個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。
  • [LeetCode] 923. 3Sum With Multiplicity 三數之和的多種情況
    然後使用兩個指針j和k分別初始化為 i+1 和 n-1,若 A[j]+A[k] 小於 sum,則將j自增1;若 A[j]+A[k] 大於 sum,則將k自減1;若 A[j]+A[k] 正好等於 sum,則此時需要統計重複數字的個數,假設跟 A[j] 相同的數字有 left 個,跟 A[k] 相同的數字有 right 個。
  • ​LeetCode刷題實戰15題: 三數之和
    今天和大家聊的問題叫做三數之和 ,我們先來看題面:https://leetcode.com/problems/3sum/描述給定一個整數的數組,要求尋找當中所有的a,b,c三個數的組合,使得三個數的和為0.注意,
  • 約數之和
    有,知道2013的正約數個數的公式:1、分解質因數,寫成指數形式,2013=3×11×61;2、指數加1,三個質因數的指數都是1,所以三個都加1得到2;3、把得到的數乘起來,2×2×2=8。所以一共8個約數。可是沒有學過所有正約數的和的公式啊。好意思伐?才8個約數,加一遍又如何?8個約數分別是1、3、11、61、33、183、671、2013。
  • 欣賞從「收斂的自然數平方倒數之和」到「發散的自然數倒數之和」
    前一篇文章《π告訴你:「偶數平方的倒數和」和「奇數平方的倒數和」等於多少》中我們有歐拉的自然數平方倒數之和得出了一些與π有關的其他的無窮級數,這些級數甚是有趣,但更重要的是表明了自然數平方倒數之和是有極限的,或者說是收斂的。
  • 數學題:一個四位數與它的各個位上的數之和是1972,求這個四位數
    那就來看看這道小學數學題:一個四位數與它的各個位上的數之和是1972,求這個四位數。這道題可能難度有點高,難怪很多小學生解答不出來。那麼,這道題到底要怎麼解答呢?下面小編來說下解題過程。首先因為這個數是四位數,和是1972,那麼也就是說這個四位數的千位一定是數字1,不可能是零,也不可以大於數字1,更不用說是負數了,所以這個四位數是1xxx。剩下的三個數,即便是1972,9+7+3=18,18+1=19。因此這個百位數上面的數字只是是9,這是因為別的數不管怎麼計算,都是不可能得出19xx的。
  • Python零基礎入門——認識二進位數
    在上一節課,我們安排了一個課後練習,要求同學們繪製求兩數和算法的流程圖。求兩數和算法的步驟如下:(1)獲取用戶輸入的兩個加數,分別存儲到num1和num2兩個變量;(2)求num1和num2兩數的和,將和存儲到sum變量;(3)將sum變量輸出到電腦屏幕。
  • 小學數學:數的奇偶性知識點匯總
    數的奇偶性1、 能被2整除的數叫做偶數,不能被2整除的數叫做奇數,0是偶數。2、 偶數通常用2k表示,奇數通常用2k+1或2k-1表示,這裡k為整數。3、 任意兩個整數的和與差具有相同的奇偶性。經典奧數例題:80個數排成一行,除了兩端的兩個數以外,每個數的3倍都恰好等於它兩邊的兩個數之和,這一行最左邊的幾個數是這樣的:0,1,3,8,21,…,問最右邊的一個數是奇數還是偶數?
  • 完美數 8128
    ○ 畢達哥拉斯說:萬物皆數。他提出的最迷人的數字概念是:完美數他說:數的完滿取決於它的因數(能整除原數的那些數叫做因數)。 例如:12 的因數是1,2,3,4,6。 ○ 當一個數的各因數之和大於該數本身時,該數稱為 「盈數」。 所以 12 就是一個盈數,因為它的因數加起來等於16。
  • 請在圖中圓圈內分別填入1至14各個數字,使每邊的數字之和等於26
    請在圖形圓圈內,分別填入1至14各個數字,每個數字只能用一次,使每條邊的三個數字之和,都等於26。這道題雖然看上去非常簡單,但其實很有難度。因為這是一個七邊形,而不是一個三角形。很快就能看出,要想每條邊相加之和等於26,不是太難辦,而是根本做不到!我們不妨改變一下思路,首先把最小的七個數字,分別填入七邊形各邊的中點。通過試驗,就會發現,對於這道題來說,的確算得上是一個好辦法!不過,咱們先別 太高興,因為到現在為止,最重要的問題,還沒有解決呢!
  • 認識完全數
    如果一個數恰好等於它的真因子(又叫「真因數」,即除了自身以外的約數)之和,則稱該數為完全數,又稱完美數或完備數。比如,6的約數為1、2、3、6,其真因子即為1、2、3,三者相加正好等於6,所以說6就是一個完全數。最早研究完全數的是公元前6世紀的畢達哥拉斯,他發現了6和28的數字特性——兩者都是完全數,並且他認為6這一完全數象徵著「完滿的婚姻、健康和美麗」。除了完全數,根據自然數與其真因數之和的大小關係,還有盈數和虧數。
  • 市值5000多億美元,超全球五大車企之和,特斯拉憑什麼
    世界上的老牌著名車企哪個不是發展了數十年,甚至上百年,經過漫長歲月的積累,才有了現如今的成就,可是特斯拉卻短短十幾年就成了汽車領域的新貴。現在,特斯拉的市值已經高達5000多億美元,而世界五大車企的市值之和才4000多億美元。
  • 穿越時空的畢達哥拉斯形數
    古希臘的畢達哥拉斯學派把自然數看成是點的集合,尤其對可以排成三角形、正方形的數情有獨鍾,把它們稱為「三角形數」和「正方形數」。三角形數:即構成正三角形的點數,正方形數:即構成正方形之點數。實際上就是自然數的平方。另一種說法是正方形數是兩個相繼三角形數之和,圖示如下:長方形數:凡複合數中非恰好是正方形數者為長方形數。
  • 學習易經,一定要知道易經的數和蓍草佔卜是怎麼回事,看完就懂!
    ,我們先來認識一下易經的數,只有懂了「數」,才能更好的了解蓍草佔卜。還根據河圖洛書定出天地之數和大衍之數。天地之數中的天數為:一、三、五、七、九;地數為:二、四、六、八、十。天數之和是25,地數之和是30,天地數之和是55,捨去尾數5後,整數50就是大衍之數。大,指太極,古文獻中的「太極」就是現在說的「大極」;衍,就是由簡單向複雜衍生、展開、推演。是說萬事萬物是由太極衍生出來的,由天地之數衍生出的數,就是大衍之數。
  • 用非常巧妙的方法證明自然數倒數之和是一個發散級數
    前一篇文章我們講述了阿基米德平衡原理引發的有關自然數倒數之和的奧秘,那麼自然數倒數之和是否收斂呢?還是趨於去窮大,這是數學中有關無窮級數的經典問題,歐拉,伯努利,柯西都是處理無窮級數的數學大家,這個問題早已被它們解決,而且延伸出了許多優美的結論,本篇我們從最簡的入手如下自然數的倒數,它的每個項是不斷趨於無窮小的,前十項之和等於如下結果隨著項數的增加,其結果卻增加的越來越緩慢,它是否收斂卻很難判定自然數倒數之和的級數問題,不同於幾何級數問題,
  • 穿越時空的思考,神秘的畢達哥拉斯形數
    完全數:若某數恰好等於它所有因數(包括1,但不包括該數本身)之和。例如,6=1×2×3=1+2+3,28=1+2+4+7+14,496…… 盈數:若某數大於其因數之和稱為盈數。虧數:某數小於其因數之和稱為虧數。 親和數(或友數):若一數是另一數的因數之和,反之亦然,則該兩數為親和數。
  • 【刨根問底】為什麼3的倍數可以用各個數位上數字之和來判斷?
    方法就是,把它各個數位上的數加起來如果和是3的倍數,那麼這個數就是3的倍數。反之,數位之和不是3的倍數,那麼這個數就不是3的倍數。可是,早已經習慣用這個結論的同學們,知道為什麼嗎?我們看一個慄子!判斷741是不是3的倍數。
  • 歐拉常數:如何快速得到非常精確的連續自然數的倒數之和
    連續自然數倒數之和是無窮級數的一類,也是一個非常有趣的級數,柯西,歐拉,伯努利都是處理無窮級數的高手,所以無窮級數的許多重要發現都與它們有關,對於自然數的倒數之和問題歐拉對此進行了研究,並得出了重要的歐拉常數γ,