《劍指Offer》刷題之删除連結清單中重複的結點
我不知道将去向何方,但我已在路上! |
---|
時光匆匆,雖未曾謀面,卻相遇于斯,實在是莫大的緣分,感謝您的到訪 ! |
-
題目:
在一個排序的連結清單中,存在重複的結點,請删除該連結清單中重複的結點,重複的結點不保留,傳回連結清單頭指針。 例如,連結清單1->2->3->3->4->4->5 處理後為 1->2->5
- 示例:
示例 1 :
輸入:{1,2,3,3,4,4,5}
傳回值:{1,2,5}
- 代碼1:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplication(self, pHead):
temp = []
while pHead:
temp.append(pHead.val)
pHead = pHead.next
temp = list(filter(lambda c:temp.count(c)==1,temp))
result = ListNode(None)
pre = result
for i in temp:
node = ListNode(i)
pre.next = node
pre = pre.next
return result.next
-
算法說明:
周遊連結清單,把所有的元素存入清單
temp
;
通過
和filter
lambda
函數過濾掉次數超過1的元素;
建立新的連結清單
,将其複制給result
pre
,目的是儲存頭節點;
用
将pre
temp
中的元素加傳入連結表;
傳回結果
。result.next