本題是使得兩個鏈表相加,每個鏈表中值均為0~9,對於兩個鏈表對應的值相加值sum若大於9,則為sum%10,並在指向的下一對節點的和sum上加1。
做題思路:
- 判斷兩鏈表是否有空鏈表,若有,直接返回另一個鏈表。
- 若均不為空,則對應相加即可。
語法細節:
- 定義節點。使用:類+構造方法,構造方法的參數要有節點的數值大小、對下一個節點的指針等。
- 若 l1 表示一個鏈表,則實質上 l1 表示頭節點的指針。
- 先實例一個頭結點,然后在 while 循環中逐個加入節點
- del ret 刪除頭結點
代碼實現:
class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: # @return a ListNode def addTwoNumbers(self, l1, l2): if l1 is None: return l2 elif l2 is None: return l1 else: carry = 0 ret =ListNode(0) ret_Last = ret while(l1 or l2): sum = 0 if(l1): sum = l1.val l1 = l1.next if(l2): sum += l2.val l2 = l2.next sum += carry ret_Last.next = ListNode(sum%10) ret_Last = ret_Last.next carry = (sum >= 10) if(carry): ret_Last.next =ListNode(1) ret_Last = ret.next del ret return ret_Last