刪除鍊錶中等於給定值
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...