LeetCode 203题 移除链表元素

文章目录

  • 移除链表元素
    • 题目描述
    • 问题解析
  • 总结


移除链表元素

力扣原题

题目描述

LeetCode 203题 移除链表元素_第1张图片

问题解析

 相当于移除链表中的元素,这里我写下自己的思考,在我平时的科研中基本用不到链表这种数据结构,因为链表并不是python自带的数据结构,足足学了一个礼拜才略懂其中的原理,需要自己创建链表类才可以使用。在力扣中也是,链表题目不能用数组的思维去解决。
 链表写为如下形式:

class Node:
    def __init__(self,data):
        self.data =data
        self.next=None

 使用虚拟指针的思想来解决,代码如下:

class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        pre = ListNode(None) #这里相当于实例化一个pre
        pre.next = head  # 虚拟节点指向头结点
        cur = pre # 这里才是真的虚拟节点 因为cur不受Node控制
        while cur:#不为None就一直遍历
            if cur.next and cur.next.val == val:
                cur.next = cur.next.next # 连接
            else:
                cur = cur.next#否则继续循环
        return pre.next #pre下一个才是头结点

总结

 需要仔细体会虚拟节点的作用,和双指针差不多。

你可能感兴趣的:(力扣刷题,链表,leetcode,数据结构)