1. 程式人生 > 其它 >vue相關元件用法

vue相關元件用法

題目描述

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

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

你可以假設除了數字 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