刪除鏈表中重復的結點 -python


思路:因為重復的節點都要刪除,因此需要標記重復開始前的上一個節點,又因為頭結點有可能是重復的節點,為了操作方便,我們可以再鏈表前面設置一個空節點作為頭結點,因此需要設置3個指針,第一個head指向頭結點。第二個p用來標記重復節點的前面一個節點,第三個cur用來尋找重復的節點,一旦找到p就不移動了,cur繼續往后尋找直到不是重復的節點。

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def deleteDuplication(self, pHead):
        # write code here
        head = ListNode(-1)
        p = head
        p.next = pHead
        cur = pHead
        while cur and cur.next:
            if cur.val != cur.next.val:
                p = p.next
                cur = cur.next
            else:
                val = cur.val
                while cur and cur.val == val:
                    cur = cur.next
                p.next = cur
        return head.next


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM