劍指offer 刪除鍊錶中重複的結點

2021-10-04 15:12:57 字數 1187 閱讀 7198

題目描述

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

思路

新建乙個頭結點,利用p1和p2指標判斷鍊錶中結點是否相等,利用flag標識當前不同的兩個結點之前的結點是否重複。

# -*- coding:utf-8 -*-

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

deleteduplication

(self, phead)

:# write code here

ifnot phead:

return

none

p1,p2 = phead,phead.

next

newhead = listnode(0)

p3=newhead

flag=

false

while p1 and p2:

if p1.val==p2.val:

flag=

true

else

:if flag==

true

: flag=

false

else

: p3.

next

=p1 p3=p3.

next

p1=p1.

next

p2=p2.

next

ifnot p2:

if flag==

false

: p3.

next

=p1 else

: p3.

next

=none

return newhead.

next

劍指offer 鍊錶 刪除鍊錶中的重複節點

題目在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 思路分析 思路一 使用linkedlist儲存不重複節點,重構鍊錶 分析評價 這個方法是乙個比較直接且容易想到的方法,使用時只要注意一些情況...

劍指offer 刪除鍊錶中重複的結點(鍊錶)

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 class solution listnode ans newlistnode 1 ans next phead listnode link a...

劍指Offer 鍊錶 刪除鍊錶中重複的結點

題目 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。注意該鍊錶為排序鍊錶,重複的節點不保留哦!public class listnode 1 遞迴 遞迴的方法就像是先判斷第乙個節點和之後的節...