文章目錄
- 題目
- 代碼及注釋
- 關鍵點
題目
給你一個鏈表的頭節點 head 和一個整數 val ,請你刪除鏈表中所有滿足 Node.val == val 的節點,并返回 新的頭節點 。
示例 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
輸出:[]
提示:
列表中的節點數目在范圍 [0, 104] 內
1 <= Node.val <= 50
0 <= val <= 50
代碼及注釋
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):def removeElements(self, head, val):""":type head: Optional[ListNode]:type val: int:rtype: Optional[ListNode]"""dummy = ListNode(0) #在鏈表前新建一個節點dummy.next = head #新建節點的next設為head,便于刪除后返回pre = dummy #再設置一個pre節點,設在head之間,所以初始化為dummywhile (head != None ): #判斷節點是否為空if(head.val == val): #如果節點的值為目標值pre.next = head.next #前節點移到現節點的下一個點head = head.next #現節點后移else :pre = head #如果節點不為目標值,前節點變為現節點head = head.next #現節點后移return dummy.next #返回head即dummy.next
關鍵點
1.dummy臨時節點的設置
2.prd節點的設置