日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python删除链表中重复的节点_剑指offer:删除链表中重复的节点

發(fā)布時間:2025/3/19 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python删除链表中重复的节点_剑指offer:删除链表中重复的节点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

在一個排序的鏈表中,存在重復的結(jié)點,請刪除該鏈表中重復的結(jié)點,重復的結(jié)點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理后為 1->2->5

# Definition for singly-linked list.

class ListNode:

def __init__(self, x):

self.val = x

self.next = None

class Solution:

def deleteDuplication(self, head):

"""

給定一個有序的鏈表,刪除所有重復的節(jié)點

"""

# 我們先設置一個輔助節(jié)點

# begin用來定位在返回鏈表的頭節(jié)點的前一個節(jié)點(輔助節(jié)點)上

# pre_node用來定位返回鏈表的尾節(jié)點

begin = pre_node = ListNode(0)

while head:

c = 0 # 當前值出現(xiàn)的次數(shù),初始化為0可以使后續(xù)代碼更簡潔

val = head.val # 當前值

# 記錄當前節(jié)點,因為無論如何,head都會往前移動一次,當下面這個while退出之后,

# cur != head

cur = head

# 當前值連續(xù)出現(xiàn)的次數(shù)

while head and head.val == val:

c += 1

head = head.next

# 如果當前值只連續(xù)出現(xiàn)過1次,說明不是重復節(jié)點,需要將當前節(jié)點添加到鏈表的末尾

# 由于pre_node是定位尾節(jié)點的,所以每次添加一個尾節(jié)點的時候,需要將原尾節(jié)點(pre_node)

# 和新的尾節(jié)點連接起來,然后將pre_node重新定位到鏈表的尾節(jié)點

if c == 1:

pre_node.next = cur

pre_node = pre_node.next

# 當遍歷完整個鏈表之后,注意要將尾節(jié)點與Null連接起來

pre_node.next = None

# begin在頭節(jié)點的前一個節(jié)點(輔助節(jié)點)上,因此返回begin.next

return begin.next

總結(jié)

以上是生活随笔為你收集整理的python删除链表中重复的节点_剑指offer:删除链表中重复的节点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。