203 移除鍊錶元素

2022-01-23 02:59:28 字數 2006 閱讀 3269

刪除鍊錶中等於給定值

val

的所有節點;

把下個結點的值賦值給當前結點,刪除下乙個結點;

增加乙個多餘的頭結點,方便記錄下前結點,將前結點指向下個結點,刪除當前結點;

# definition for singly-linked list.

# class listnode(object):

#     def __init__(self, x):

#         self.val = x

#         self.next = none

​class

solution(object):

defremoveelements(self, head, val):

""":type head: listnode

:type val: int

:rtype: listnode

"""node = head

while

node

andnode.val

!= val:

node = node.next

while

node:

ifnode.val == val:

# 把下個結點的值賦值給當前結點,實際是刪除下乙個結點

ifnode.next

!= none:

node.val = node.next.val

node.next = node.next.next

elif

head == node:  # 頭結點

head = none

break

else: # 尾結點

cur = head

while

cur.next

andcur.next

!= node:

cur = cur.next

cur.next = none

break

else:

node = node.next

return

head

defremoveelements(self, head, val):

""":type head: listnode

:type val: int

:rtype: listnode

"""# 新增乙個起始結點,方便獲取前結點(比如在刪除首結點的時候)

start = listnode(0)

start.next = head

prev = start

cur = head

while

curis

notnone:

ifcur.val

!= val:

prev = cur

cur = cur.next

else:

prev.next = cur.next

cur = prev.next

return

start.next

defremoveelements(self, head, val):

""":type head: listnode

:type val: int

:rtype: listnode

"""try:

while

head.val == val:

head = head.next

cur = head

nex = cur.next

while

nex:

ifnex.val

!= val:

cur.next = nex

cur = cur.next

nex = nex.next

ifcur.next.val == val:

cur.next = none

except:

true

return

head

203 移除鍊錶元素

刪除鍊錶中等於給定值val的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6輸出 1 2 3 4 5刪除結點的步驟 找到該結點的前乙個結點 進行刪除操作 三種方法 1.刪除頭結點時另做考慮 由於頭結點沒有前乙個結點 2.新增乙個虛擬頭結點,刪除頭結點就不用另做考慮 3.遞迴 演示 方法一...

203 移除鍊錶元素

刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5使用空表頭,就可以不用判斷單個節點的情況或多個相同節點的情況.使用空表頭 public listnode removeelementsdummy listnode head,int ...

203 移除鍊錶元素

刪除鍊錶中與val值相等的節點,使用哨兵節點 哨兵節點廣泛應用於樹和鍊錶中,如偽頭 偽尾 標記等,它們是純功能的,通常不儲存任何資料,其主要目的是使鍊錶標準化,如使鍊錶永不為空 永不無頭 簡化插入和刪除。屬於簡單題 class solution def removeelements self,hea...