Leetcode 203. Remove Linked List Elements

题目描述:去除链表中值等于给定值得节点,返回一个链表。

题目链接:Leetcode 203. Remove Linked List Elements

思路:没啥好说的,断链操作。

主要是val在第一个元素的时候考虑,快慢指针的条件是while p and p.next这个条件不错。
这个逻辑还是比较凌乱,要是指示一个prev、一个dummy.next 会更好。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeElements(self, head, val):
        """
        :type head: ListNode
        :type val: int
        :rtype: ListNode
        """
        dummy = ListNode(None)
        dummy.next = head
        p = dummy.next
        prev = dummy
        while(p):
            if p.val == val:
                prev.next = p.next
            else:
                prev = p  #移动prev
            p = p.next
            
        return dummy.next    
         

Leetcode 203. Remove Linked List Elements