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

Leetcode203.移除链表元素

时间:2023-10-16 20:37:17浏览次数:41  
标签:head ListNode val nextNode next 链表 移除 Leetcode203

题目描述

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

示例

image

提交的代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        //设置虚头部
        ListNode fakeHead=new ListNode(-1,head);
        //使得next指向下一节点
        ListNode nextNode=head;
        //当前节点的Node
        ListNode current=head;
        //前节点
        ListNode pre=fakeHead;
        //遍历链表
        while(nextNode!=null){
            //next指针向后运动
            nextNode=nextNode.next;
            if(current.val==val){
                pre.next=nextNode;
            }else{
                pre=current;
            }
            current=nextNode;
        }

        return fakeHead.next;
    }
}

增加一个虚头来使得增删的代码逻辑统一

标签:head,ListNode,val,nextNode,next,链表,移除,Leetcode203
From: https://www.cnblogs.com/whitePuPigeon/p/17768260.html

相关文章

  • 链表的头插和尾插(数组--链表)
    头插法代码示例publicclassLinkDemo{publicstaticvoidmain(String[]args){//将这个数组按头插的方式插入列表int[]arr={1,2,3,4,5,6,7,8,9};headIndert(arr);}publicstaticvoidheadIndert(int[]arr){Nodeli......
  • 使用链表而不是 stdarg 实现可变参数函数
    Qidi2023.10.150.需要使用可变参数函数的场景常见的场景是类似于printf(char*fmt,...)函数,输入的参数个数和类型都是未知的,此时除了需要...表示可变参数列表,还需要用fmt参数说明参数的个数和类型。还有另一种场景,假设我们要实现一个音频控制功能的程序。在初始设计......
  • 如何移除子模块?
    内容来自DOChttps://q.houxu6.top/?s=如何移除子模块?如何移除Git子模块?为什么我不能执行gitsubmodulermmodule_name命令?自从git1.8.3(2013年4月22日)起:一旦你表达了对子模块的兴趣,gitsubmoduleinit,就没有了“我不再对这个子模块感兴趣”的Porcelain方式。gits......
  • C#内存缓存链表BytesListBuffer
    C#自带MemoryStream,可以作为内存缓存使用,用来存储byte[]数据,但是MemoryStream的扩展机制是通过获取整块连续内存来缓存数据,当需要缓存较大数据时,虽然空闲内存可能足够,但是可能找不到足够大的整块连续内存而导致扩展失败产生outofmemory的异常。另外,对于很多缓存场景,重新分配整块......
  • JS操作增加Class属性和移除删除Class属性
    直接上代码functiongo(a){if(a=='shifu'){//移除属性varshop=document.getElementsByClassName("shop")[0];shop.classList.remove("ns-border-color");//增加属性......
  • 面试必刷TOP101:3、链表中的节点每k个一组翻转
    一、题目将给出的链表中的节点每k 个一组翻转,返回翻转后的链表如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。二、题解publicclassSolution{/****@paramheadListNode类*@paramkint整型......
  • 面试必刷TOP101:2、链表内指定区间反转
    一、题目将一个节点数为size链表m 位置到n位置之间的区间反转,要求时间复杂度O(n),空间复杂度O(1)。例如:importjava.util.*;/**publicclassListNode{*intval;*ListNodenext=null;*}*/publicclassSolution{/****@paramhea......
  • 力扣19.删除链表的倒数第 N 个结点
    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5] 示例2:输入:head=[1],n=1输出:[] 示例3:输入:head=[1,2],n=1输出:[1]  提示:链表中结点的数目为 sz1<=sz<=300<=N......
  • LeetCode27. 移除元素
    描述给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1输入:nums=[3,2,2,3......
  • 面试必刷TOP101:1、反转链表
    一、题目给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。示例:输入:{1,2,3}返回值:{3,2,1}二、题解2.1使用栈求解栈是先进后出的。实现原理就是把链表节点一个个入栈,当全部入栈完之后再一个个出栈,出栈的时候在把出栈的结点......