首页 > 其他分享 >移除链表元素

移除链表元素

时间:2023-04-18 12:01:43浏览次数:36  
标签:head ListNode val self 元素 next 链表 移除

移除链表元素

203. 移除链表元素

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

示例 1:

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]

Python

解一:

# 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: ListNode
        :type val: int
        :rtype: ListNode
        """
        p = ListNode(next=head)
        p = head
        if head == None:
            return head
        while p.next != None:
            if p.val == val:
                head = p.next
                p = p.next
            elif p.next.val == val:
                p.next = p.next.next
            else:
                p = p.next 
        if p.val == val:
            p = p.next
            head = p
        return head

解二

# 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: ListNode
        :type val: int
        :rtype: ListNode
        """
        sta = ListNode(next=head)
        p = sta
        while p.next != None:
            if p.next.val == val:
                p.next = p.next.next
            else:
                p = p.next 
        return sta.next

笔记

  1. python中不可变数据类型有:整型、浮点型、元组(改变变量值后,变量指向内存位置改变即为不可变类型);
  2. python中也是有指针的,python采用基于值的内存管理模式,每个变量都可以理解为指针(这也是为什么要用a = b[:]来创建一个不会影响原列表的列表副本),当指向不可变数据类型的变量改变值,会发生指向内存位置的改变;
  3. 解二中将后续移动的指针定义在head前面,即p.next = head,这样之后就不需要将链表首端和尾端为需要删除链点当作特殊情况。

标签:head,ListNode,val,self,元素,next,链表,移除
From: https://www.cnblogs.com/zhiyue-bit/p/17329100.html

相关文章

  • 将用户从docker组移除
    将用户从docker组移除:gpasswd-dec2-userdocker1.使用命令gpasswd删除用户要将用户从一个组中移除,需要先确定用户的帐号,然后查看要删除的组名,使用命令gpasswd-d即可实现将用户从组中移除。例如,要将用户“alice”从组“test”中移除,可以运行以下命令:gpasswd-dalicetest2......
  • P1996 约瑟夫问题-循环链表方法
    题目描述n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n−1 名小朋友,而该题是全部......
  • 移除元素
    给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明为什么返回数值是整数,但......
  • 用双链表实现双端队列
    //双链表publicstaticclassNode<V>{publicVvalue;publicNode<V>last;publicNode<V>next;publicNode(Vv){value=v;last=null;next=null;}}//双端队列前后皆可进出publicstaticclassMyDequ......
  • [Leetcode]删除链表中等于val 的所有结点
    力扣链接方法一:使用前后两个指针,cur指向当前位置,prev指向前一个位置,通过改变指向和释放结点来删除val初步代码,还存在问题:/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*remo......
  • 【LBLD】常数时间删除-查找数组中的任意元素
    常数时间删除-查找数组中的任意元素380.O(1)时间插入、删除和获取随机元素classRandomizedSet{private:vector<int>nums;unordered_map<int,int>num2index;public:RandomizedSet(){srand(time(0));}boolinsert(intval){......
  • 轮换数组——给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数
    示例输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]这里使用reverse函数来解决问题,思路是:1.反转整个字符串2.反转区间为前k的子串3.反转区间为k到末尾的......
  • python+playwright 学习-52 iframe 定位与操作元素,监听事件,执行JS脚本总结
    前言本篇全面总结关于iframe的定位,iframe上元素的操作(输入框,点击等),iframe上的事件监听与iframe上执行JS脚本的总结。iframe对象的定位定位iframe对象,总的来说有四种方法page.frame_locator(selector)通过page对象直接定位iframe对象,传selector选择器参数page.loca......
  • 四种语言刷算法之环形链表
    力扣141. 环形链表1、C/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/boolhasCycle(structListNode*head){if(head==NULL||head->next==NULL)returnfalse;structListNode*p=h......
  • 单双链表
    单链表定义//单链表publicstaticclassNode{publicintvalue;publicNodenext;publicNode(intdata){value=data;}}单链表反转新增1、2、3三个节点publicstaticNodereverseLinkedList(Nodehead){Nodepre=null;Nodenext=......