[問題] 新手解LeetCode:Swap Nodes in Pairs
最近開始用Python解題
未學過正規的Python 因此對於一些觀念尚不太了解
題目是將鏈表中的元素兩兩對調
例如: Given 1->2->3->4, return the list as 2->1->4->3
我的Code如下:
class Solution(object):
def swapPairs(self, head):
if head is None or head.next is None:
return head
dummy = ListNode(0)
dummy.next = head
pre = dummy
tmp = head
while tmp and tmp.next:
pre.next = tmp.next
tmp.next = tmp.next.next <---有疑問
pre.next.next = tmp <---有疑問
pre = tmp
tmp = tmp.next
return dummy.next
以上的Code沒問題
但如果我將上面標示有疑問的那兩行順序對調,改成:
class Solution(object):
def swapPairs(self, head):
if head is None or head.next is None:
return head
dummy = ListNode(0)
dummy.next = head
pre = dummy
tmp = head
while tmp and tmp.next:
pre.next = tmp.next
pre.next.next = tmp <---已對調
tmp.next = tmp.next.next <---已對調
pre = tmp
tmp = tmp.next
return dummy.next
系統將會出現Time Limit的錯誤
就我的認知,這兩行對調應該完全沒差別?
另一個問題是,我在一開始將dummy指定給pre 掃描鏈表時是用pre在跑
而最後直接return dummy時,dummy也會跟著pre的變化而改變? 代表那個'等號'的operator
是有傳址的意味在,而不像一般的等號直接複製到另一塊新的記憶體?
以上問題,還請高手們提點,感激不盡!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.31.161.60
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1470164308.A.F45.html
推
08/03 11:59, , 1F
08/03 11:59, 1F
推
08/03 14:24, , 2F
08/03 14:24, 2F
推
08/03 19:22, , 3F
08/03 19:22, 3F
推
08/03 19:24, , 4F
08/03 19:24, 4F
推
08/03 19:32, , 5F
08/03 19:32, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):