摘要:這題是說(shuō)給出兩個(gè)鏈表每個(gè)鏈表代表一個(gè)多位整數(shù)個(gè)位在前比如代表著求這兩個(gè)鏈表代表的整數(shù)之和同樣以倒序的鏈表表示難度這個(gè)題目就是模擬人手算加法的過(guò)程需要記錄進(jìn)位每次把對(duì)應(yīng)位置兩個(gè)節(jié)點(diǎn)如果一個(gè)走到頭了就只算其中一個(gè)的值加上進(jìn)位值
Add Two Numbers
You are given two linked lists representing two non-negative numbers. 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.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
這題是說(shuō): 給出兩個(gè)鏈表, 每個(gè)鏈表代表一個(gè)多位整數(shù), 個(gè)位在前. 比如2->4->3代表著342. 求這兩個(gè)鏈表代表的整數(shù)之和(342+465=807), 同樣以倒序的鏈表表示.
難度: Medium
這個(gè)題目就是模擬人手算加法的過(guò)程, 需要記錄進(jìn)位. 每次把對(duì)應(yīng)位置, 兩個(gè)節(jié)點(diǎn)(如果一個(gè)走到頭了, 就只算其中一個(gè)的值), 加上進(jìn)位值, 作為結(jié)果節(jié)點(diǎn)的值, 如果大于9, 需要把進(jìn)位剝離出來(lái).
public class Solution { public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int addUp = 0; ListNode ret = null; ListNode cur = null; while (l1 != null || l2 != null) { if (cur == null) { cur = ret = new ListNode(0); } else { cur.next = new ListNode(addUp); cur = cur.next; } cur.val += (l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val); addUp = cur.val / 10; cur.val = cur.val % 10; if (l1 != null) { l1 = l1.next; } if (l2 != null) { l2 = l2.next; } } if (addUp > 0) { cur.next = new ListNode(addUp); } return ret; } public static void main(String[] args) { Solution s = new Solution(); ListNode a = s.new ListNode(2); a.next = s.new ListNode(4); a.next.next = s.new ListNode(3); ListNode b = s.new ListNode(5); b.next = s.new ListNode(6); // b.next.next = s.new ListNode(4); ListNode c = s.addTwoNumbers(a, b); while (true) { System.out.println(c.val); if (c.next != null) { c = c.next; } else { break; } } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/66377.html
摘要:給出兩個(gè)非空的鏈表用來(lái)表示兩個(gè)非負(fù)的整數(shù)。如果,我們將這兩個(gè)數(shù)相加起來(lái),則會(huì)返回一個(gè)新的鏈表來(lái)表示它們的和。需要考慮到兩個(gè)鏈表長(zhǎng)度不同時(shí)遍歷方式鏈表遍歷完成時(shí)最后一位是否需要進(jìn)一位。 ?給出兩個(gè) 非空 的鏈表用來(lái)表示兩個(gè)非負(fù)的整數(shù)。其中,它們各自的位數(shù)是按照 逆序 的方式存儲(chǔ)的,并且它們的每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字。如果,我們將這兩個(gè)數(shù)相加起來(lái),則會(huì)返回一個(gè)新的鏈表來(lái)表示它們的和。 ...
摘要:給出兩個(gè)非空的鏈表用來(lái)表示兩個(gè)非負(fù)的整數(shù)。如果,我們將這兩個(gè)數(shù)相加起來(lái),則會(huì)返回一個(gè)新的鏈表來(lái)表示它們的和。需要考慮到兩個(gè)鏈表長(zhǎng)度不同時(shí)遍歷方式鏈表遍歷完成時(shí)最后一位是否需要進(jìn)一位。 ?給出兩個(gè) 非空 的鏈表用來(lái)表示兩個(gè)非負(fù)的整數(shù)。其中,它們各自的位數(shù)是按照 逆序 的方式存儲(chǔ)的,并且它們的每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字。如果,我們將這兩個(gè)數(shù)相加起來(lái),則會(huì)返回一個(gè)新的鏈表來(lái)表示它們的和。 ...
摘要:更新之前說(shuō)感覺(jué)優(yōu)秀答案的最后三行可以用尾遞歸優(yōu)化不知道尾遞歸的小伙伴可以點(diǎn)這里,仔細(xì)想了一下,并不能。尾遞歸的實(shí)現(xiàn),往往需要改寫(xiě)遞歸函數(shù),確保最后一步只調(diào)用自身。 上周日就想寫(xiě)vue.nextTick的源碼分析,可是總是不知道從哪兒下手,今天有時(shí)間,先把leetcode第二題補(bǔ)了,感覺(jué)這道題還挺簡(jiǎn)單的 一、題目 兩數(shù)相加: 給出兩個(gè) 非空 的鏈表用來(lái)表示兩個(gè)非負(fù)的整數(shù)。其中,它們各自...
摘要:多位數(shù)加多位數(shù),反轉(zhuǎn)鏈表轉(zhuǎn)化整數(shù),如果整數(shù)相加,可能會(huì)溢出,此方法行不通。直接進(jìn)行位數(shù)運(yùn)算,兩鏈表每取出一個(gè)就做運(yùn)算,將結(jié)果放入到新鏈表中。求和運(yùn)算會(huì)出現(xiàn)額外的進(jìn)位一般進(jìn)位與最高位進(jìn)位兩種情況。兩位數(shù)取模運(yùn)算。 Time:2019/4/2Title: ADD Two NumbersDifficulty: mediumAuthor:小鹿公眾號(hào):一個(gè)不甘平凡的碼農(nóng)。 題目二:ADD Two...
摘要:公眾號(hào)愛(ài)寫(xiě)給定一個(gè)已按照升序排列的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值和,其中必須小于。示例輸入輸出解釋與之和等于目標(biāo)數(shù)。 公眾號(hào): 愛(ài)寫(xiě)bug(ID:icodebugs) 給定一個(gè)已按照升序排列 的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。 函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值 index1 和 index2,其中 index1 必須小于 index2。...
閱讀 1846·2021-10-13 09:39
閱讀 1398·2019-08-30 13:58
閱讀 1493·2019-08-29 16:42
閱讀 3629·2019-08-29 15:41
閱讀 3051·2019-08-29 15:11
閱讀 2671·2019-08-29 14:10
閱讀 3500·2019-08-29 13:29
閱讀 2157·2019-08-26 13:27