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.反转链表
题目
解题思路
方法一:使用头插法创建链表
方法二:不新建链表,只修改原链表next指针的指向
实现代码
                    
                
                
            
        
浙公网安备 33010602011771号