leetcode 203.移除链表元素

题目

203.移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

解题思路

1、创建一个虚拟头节点,简化删除过程(如果不创建虚拟头结点,则需要判断头节点是否为空,头结点为空和头节点非空,移除元素的代码有差异)
2、删除链表中值为val的元素:假设值为val的元素为node,删除node的过程是node前一个节点的next指向node后一个节点,把node跳过

实现代码

# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        dummy_head = ListNode(next = head)  # 创建一个虚拟头指针,它的next指向head
        
        current = dummy_head  # current指向虚拟头结点
        while current.next:
            if current.next.val == val:   # 如果current下一个节点的值等于整数val
                current.next = current.next.next  # current的下一个节点指向下下和节点(该过程就会把值为val的节点跳过)
            else:
                current = current.next  # 如果current下一个节点的值不等于整数val,current指针移动到下个节点
        return dummy_head.next

leetcode 206.反转链表

题目

206.反转链表

解题思路

方法一:使用头插法创建链表
方法二:不新建链表,只修改原链表next指针的指向

实现代码

posted on 2024-04-08 08:54  小鹿BAMBI  阅读(2)  评论(0编辑  收藏  举报