天天看點

《劍指Offer》刷題之删除連結清單中重複的結點

《劍指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

繼續閱讀