劍指 Offer 18 刪除鍊錶的節點

2021-10-22 04:46:25 字數 2920 閱讀 7617

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。

返回刪除後的鍊錶的頭節點。

注意:此題對比原題有改動

示例 1:

輸入:head = [4,5,1,9], val = 5

輸出:[4,1,9]

解釋:給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 1 -> 9.

示例 2:

輸入:head = [4,5,1,9], val = 1

輸出:[4,5,9]

解釋:給定你鍊錶中值為 1 的第三個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 5 -> 9.

按照慣例放上乙個我自己的解法,這次我認為我的解法好像更好一點點,因為能節省乙個變數的空間,雖然。。。乙個變數的空間也沒有什麼用

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

deletenode

(self, head: listnode, val:

int)

-> listnode:

while head.val == val:

head = head.

next

result = head

while head.

next

isnot

none

:if head.

next

.val == val:

head.

next

= head.

next

.next

else

: head = head.

next

return result

大神的解題思路本題刪除值為val的節點分需為兩步:定位節點、修改引用。

定位節點: 遍歷鍊錶,直到head.val == val時跳出,即可定位目標節點。

修改引用: 設節點cur的前驅節點為pre,後繼節點為cur.next;則執行pre.next=cur.next,即可實現刪除cur節點。

演算法流程:

特例處理: 當應刪除頭節點head時,直接返回head.next即可。

初始化pre = head,cur = head.next

定位節點: 當cur為空cur節點值等於val時跳出。

儲存當前節點索引,即pre = cur

遍歷下一節點,即cur = cur.next

刪除節點: 若cur指向某節點,則執行pre.next = cur.nextcur指向 nul

lnull

null

,代表鍊錶中不包含值為val的節點。

返回值:返回鍊錶頭部節點 head 即可。

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

deletenode

(self, head: listnode, val:

int)

-> listnode:

while head.val == val:

head = head.

next

result = head

pre = result

cur = result.

next

while cur is

notnone

:if cur.val == val:

pre.

next

= cur.

next

pre = cur

cur = cur.

next

return result

劍指offer18 刪除鍊錶節點

1.考慮輸入空鍊錶和乙個節點鍊錶 2.如果頭節點不重複,直接遞迴查詢重複 3.雙指標,進行判斷兩個節點是不是相等 coding utf 8 class listnode def init self,x self.val x self.next none class solution def dele...

劍指offer 18 刪除鍊錶的結點

typedef int datatype typedef struct listnode listnode 建立結點 static listnode createnode datatype data 鍊錶初始化 void listinit listnode ppfirst 鍊錶銷毀 void lis...

劍指offer 18 刪除鍊錶的節點

描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。示例 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.常規思路 定義乙個暫時變數用來刪除節點...