摘要:給出兩個非空的鏈表用來表示兩個非負的整數。如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。需要考慮到兩個鏈表長度不同時遍歷方式鏈表遍歷完成時最后一位是否需要進一位。
?給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,并且它們的每個節點只能存儲 一位 數字。如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。
You are given two non-empty linked lists representing two non-negative integers. 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.
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -> 0 -> 8 原因:342 + 465 = 807解題思路:
將兩個鏈表遍歷將相同位置節點值累加,其和過十進一,新鏈表相對位置節點值取其和的個位數值。需要考慮到兩個鏈表長度不同時遍歷方式、鏈表遍歷完成時最后一位是否需要進一位。
Java:class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = new ListNode(0);//虛擬頭節點 ListNode cur = head;//指針 int carry = 0;//進位值 while (l1 != null || l2 != null) {//兩個鏈表均為空時停止遍歷 int x = (l1 != null) ? l1.val : 0;//x為l1的值,如果節點為空,值為0 int y = (l2 != null) ? l2.val : 0;//y為l2的值,如果節點為空,值為0 int sum = carry + x + y;//sum為兩節點值之和 carry = sum / 10;//得進位值(1) cur.next = new ListNode(sum % 10);//sum%10 得余數即 個位數的值 cur = cur.next;//刷新指針 if (l1 != null) l1 = l1.next;//l1節點不為空繼續刷新下一個節點 if (l2 != null) l2 = l2.next;//l2節點不為空繼續刷新下一個節點 } if (carry > 0) {//如果仍然需要進 1 ,則直接新建一個節點 cur.next = new ListNode(carry); } return head.next; } }Python3:
class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: head = ListNode(0) cur = head sum = 0 while l1 or l2: if l1:#l1不為空 sum += l1.val#累計兩節點值的和 l1 = l1.next#刷新節點 if l2: sum += l2.val#累計兩節點值的和 l2 = l2.next#刷新節點 cur.next = ListNode(sum % 10)//刷新新鏈表 cur = cur.next sum = sum // 10 if sum != 0: cur.next = ListNode(sum) return head.next
歡迎關注公.眾號一起刷題: 愛寫Bug
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75501.html
摘要:這題是說給出兩個鏈表每個鏈表代表一個多位整數個位在前比如代表著求這兩個鏈表代表的整數之和同樣以倒序的鏈表表示難度這個題目就是模擬人手算加法的過程需要記錄進位每次把對應位置兩個節點如果一個走到頭了就只算其中一個的值加上進位值 Add Two Numbers You are given two linked lists representing two non-negative num...
摘要:給出兩個非空的鏈表用來表示兩個非負的整數。如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。需要考慮到兩個鏈表長度不同時遍歷方式鏈表遍歷完成時最后一位是否需要進一位。 ?給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,并且它們的每個節點只能存儲 一位 數字。如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。 ...
摘要:更新之前說感覺優秀答案的最后三行可以用尾遞歸優化不知道尾遞歸的小伙伴可以點這里,仔細想了一下,并不能。尾遞歸的實現,往往需要改寫遞歸函數,確保最后一步只調用自身。 上周日就想寫vue.nextTick的源碼分析,可是總是不知道從哪兒下手,今天有時間,先把leetcode第二題補了,感覺這道題還挺簡單的 一、題目 兩數相加: 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自...
摘要:多位數加多位數,反轉鏈表轉化整數,如果整數相加,可能會溢出,此方法行不通。直接進行位數運算,兩鏈表每取出一個就做運算,將結果放入到新鏈表中。求和運算會出現額外的進位一般進位與最高位進位兩種情況。兩位數取模運算。 Time:2019/4/2Title: ADD Two NumbersDifficulty: mediumAuthor:小鹿公眾號:一個不甘平凡的碼農。 題目二:ADD Two...
摘要:公眾號愛寫給定一個已按照升序排列的有序數組,找到兩個數使得它們相加之和等于目標數。函數應該返回這兩個下標值和,其中必須小于。示例輸入輸出解釋與之和等于目標數。 公眾號: 愛寫bug(ID:icodebugs) 給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等于目標數。 函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小于 index2。...
閱讀 1994·2021-11-15 18:09
閱讀 889·2021-09-06 15:13
閱讀 2636·2021-08-23 09:43
閱讀 2016·2019-08-30 15:54
閱讀 2208·2019-08-30 13:56
閱讀 2476·2019-08-26 11:31
閱讀 3069·2019-08-26 10:56
閱讀 684·2019-08-26 10:28