vue相關元件用法
阿新 • • 發佈:2022-03-03
題目描述
給你兩個非空 的連結串列,表示兩個非負的整數。它們每位數字都是按照逆序的方式儲存的,並且每個節點只能儲存一位數字。
請你將兩個數相加,並以相同形式返回一個表示和的連結串列。
你可以假設除了數字 0 之外,這兩個數都不會以 0開頭。
輸入:l1 = [2,4,3], l2 = [5,6,4]
輸出:[7,0,8]
解釋:342 + 465 = 807.
演算法思想
- 將兩個連結串列看成是相同長度的進行遍歷,如果一個連結串列較短則在前面補 0
- 每一位計算的同時需要考慮上一位的進位問題,而當前位計算結束後同樣需要更新進位值
- 如果兩個連結串列全部遍歷完畢後,進位值為 1,則在新連結串列最前方新增節點 1
- trick:對於連結串列問題,返回結果為頭結點時,通常需要先初始化一個預先指標 pre,該指標的下一個節點指向真正的頭結點head
程式碼實現
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: # 進位初始為0 carry = 0 head = ListNode(-1) cur = head while(l1 or l2): n1 = l1.val if l1 else 0 n2 = l2.val if l2 else 0 sum = n1 + n2 + carry tmp = ListNode(sum%10) cur.next = tmp cur = tmp carry = sum / 10 if l1: l1 = l1.next if l2: l2 = l2.next if carry>0: cur.next = ListNode(carry) return head.next