力扣每日一題:203.移除鏈表元素 圖解鏈表判斷過程

203.移除鏈表元素

https://leetcode-cn.com/problems/remove-linked-list-elements/solution/203yi-chu-lian-biao-yuan-su-tu-jie-lian-u2qii/

難度:簡單

題目:

給你一個鏈表的頭節(jié)點 head 和一個整數(shù) val ,請你刪除鏈表中所有滿足 Node.val == val 的節(jié)點,并返回 新的頭節(jié)點 。

示例:

image.png
示例 1:
輸入:head = [1,2,6,3,4,5,6], val = 6
輸出:[1,2,3,4,5]

示例 2:
輸入:head = [], val = 1
輸出:[]

示例 3:
輸入:head = [7,7,7,7], val = 7
輸出:[]

分析

  1. 首先我們創(chuàng)建一個空鏈表頭ret,然后使用tmp = ret進(jìn)行鏈表操作
  2. 之后開始循環(huán)head鏈表
  3. 當(dāng)該節(jié)點的值不等于val時,將tmp的next指向該節(jié)點,然后將tmp指向它的next節(jié)點。
  4. 這里注意tmp在結(jié)束時,需要將它的未節(jié)點指向None,避免出現(xiàn)符合條件的最后一次賦值后,鏈接指向錯誤問題。
image.png

解題:

class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        tmp = ret = ListNode()
        while head:
            if head.val != val:
                tmp.next = head
                tmp = tmp.next
            head = head.next
        tmp.next = None
        return ret.next

歡迎關(guān)注我的公眾號: 清風(fēng)Python,帶你每日學(xué)習(xí)Python算法刷題的同時,了解更多python小知識。

我的個人博客:https://qingfengpython.cn

力扣解題合集:https://github.com/BreezePython/AlgorithmMarkdown

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容