有狀態元件 & 無狀態元件 <React>
阿新 • • 發佈:2021-07-12
給你兩個非空 的連結串列,表示兩個非負的整數。它們每位數字都是按照逆序的方式儲存的,並且每個節點只能儲存一位數字。
請你將兩個數相加,並以相同形式返回一個表示和的連結串列。
你可以假設除了數字 0 之外,這兩個數都不會以 0開頭。
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
判斷好進位和空陣列,陣列長度不一致的情形即可
def addTwoNumbers(self,l1,l2): result =[] carry = False index = 0 while True: if index < len(l1) and index < len(l2): result.append((l1[index]+l2[index])%10) if carry: result[-1] = result[-1] +1 carry = False if (l1[index]+l2[index]) >= 10: carry = True index = index + 1 else: break while index < len(l1): if carry: tmp = 1 +l1[index] result.append(tmp%10) if tmp >= 10: index += 1 else: carry = False result+=(l1[index+1:]) break else: result +=(l1[index:]) break while index < len(l2): if carry: tmp = 1 +l2[index] result.append(tmp%10) if tmp >= 10: index += 1 else: carry = False result.append(l2[index+1:]) break else: result +=(l2[index:]) break return result
def addTwoNumbers(self, l1, l2): if l1 == None: return l2 if l2 == None: return l1 flag = 0 dummy = ListNode(0); p = dummy while l1 and l2: p.next = ListNode((l1.val+l2.val+flag) % 10) flag = (l1.val+l2.val+flag) / 10 l1 = l1.next; l2 = l2.next; p = p.next if l2: while l2: p.next = ListNode((l2.val+flag) % 10) flag = (l2.val+flag) / 10 l2 = l2.next; p = p.next if l1: while l1: p.next = ListNode((l1.val+flag) % 10) flag = (l1.val+flag) / 10 l1 = l1.next; p = p.next if flag == 1: p.next = ListNode(1) return dummy.next