当前位置: 首页 > news >正文

算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表

1、算法思路

讲一下设置虚拟头节点的那个方法,设置一个新节点指向原来链表的头节点,这样我们就可以通过判断链表的当前节点的后继节点值是不是目标删除值,来判断是否删除这个后继节点了。如果不设置虚拟头节点,则需要将头节点和后面的节点分开来讨论,代码会复杂一点。

2、Java代码实现

package listnodes;//Definition for singly-linked list.
class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}public class RemoveElements {public static void main(String[] args) {//构造链表
//        int[] nums = new int[]{1,2,6,3,4,5,6};
//        int[] nums = new int[]{7,7,7,7};int[] nums = new int[]{1,2,2,1};ListNode head = null;for (int i = nums.length - 1; i >= 0; i--) {ListNode node = new ListNode(nums[i]);if(head != null){node.next = head;}head = node;}//处理链表Solution sol = new Solution();
//        ListNode resNode = sol.removeElements(head, 6);//[1,2,3,4,5]
//        ListNode resNode = sol.removeElements(head, 7);//[]ListNode resNode = sol.removeElements(head, 2);//[1, 1]//遍历链表并打印StringBuilder sb = new StringBuilder("[");while(resNode != null){if(sb.length() != 1) sb.append(", ");sb.append(resNode.val);resNode = resNode.next;}sb.append("]");System.out.println(sb);}
}// 递归法
//class Solution {
//    public ListNode removeElements(ListNode head, int val) {
//        if (head == null) {
//            return head;
//        }
//        head.next = removeElements(head.next, val);
//        return head.val == val ? head.next : head;
//    }
//}// 头结点是否删除最后再考虑
//class Solution {
//    public ListNode removeElements(ListNode head, int val) {
//        ListNode pre = head;
//        while(pre != null && pre.next != null){
//            if(pre.next.val == val){
//                //跳过当前节点的后一个节点赋值给当前节点的前一个节点的next,相当于删除当前节点
//                pre.next = pre.next.next;
//            }else{
//                pre = pre.next;
//            }
//        }
//        pre = head;
//        while(pre != null && pre.val == val){
//            pre = pre.next;
//        }
//        return pre;
//    }
//}// 设置一个虚拟头结点,这样代码更简单
class Solution {public ListNode removeElements(ListNode head, int val) {ListNode temp = new ListNode(0);temp.next = head;ListNode pre = temp;while(pre.next != null){if(pre.next.val == val){//跳过当前节点的后一个节点赋值给当前节点的前一个节点的next,相当于删除当前节点pre.next = pre.next.next;}else{pre = pre.next;}}return temp.next;}
}

3、完整题目

203. 移除链表元素

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

示例 1:

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

示例 2:

输入:head = [], val = 1
输出:[]

示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]

提示:

  • 列表中的节点数目在范围 [0, 10^4] 内
  • 1 <= Node.val <= 50
  • 0 <= val <= 50

相关文章:

算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表

1、算法思路 讲一下设置虚拟头节点的那个方法&#xff0c;设置一个新节点指向原来链表的头节点&#xff0c;这样我们就可以通过判断链表的当前节点的后继节点值是不是目标删除值&#xff0c;来判断是否删除这个后继节点了。如果不设置虚拟头节点&#xff0c;则需要将头节点和后…...

ubuntu18.04 多版本opencv配置记录

多版本OpenCV过程记录 环境 ubuntu18.04 python2.7 python3.6 python3.9 opencv 3.2 OpenCV 4.4.0安装 Ubuntu18.04 安装 Opencv4.4.0 及 Contrib (亲测有效) 暂时不清楚Contrib的作用&#xff0c;所以没安装&#xff0c;只安装最基础的 下载opencv4.4.0并解压 opencv下载…...

Spring Security—OAuth 2.0 资源服务器的多租户

一、同时支持JWT和Opaque Token 在某些情况下&#xff0c;你可能需要访问两种令牌。例如&#xff0c;你可能支持一个以上的租户&#xff0c;其中一个租户发出JWT&#xff0c;另一个发出 opaque token。 如果这个决定必须在请求时做出&#xff0c;那么你可以使用 Authenticati…...

VB.NET—窗体引起的乌龙事件

目录 前言: 过程: 总结: 升华: 前言: 分享一个VB.NET遇到的一个问题&#xff0c;开始一直没有解决&#xff0c;这个问题阻碍了很长时间&#xff0c;成功的变成我路上的绊脚石&#xff0c;千方百计的想要绕过去&#xff0c;但事与愿违怎么也绕不过去&#xff0c;因为运行不了…...

批量新增报错PSQLException: PreparedStatement can have at most 65,535 parameters.

报错信息&#xff1a; org.postgresql.util.PSQLException: PreparedStatement can have at most 65,535 parameters. Please consider using arrays, or splitting the query in several ones, or using COPY. Given query has 661,068 parameters ; SQL []; PreparedStatemen…...

数仓分层能减少重复计算,为啥能减少?如何减少?这篇文章包懂!

很多时候&#xff0c;看一些数据领域的文章&#xff0c;说到为什么做数据仓库、数据仓库要分层&#xff0c;我们经常会看到一些结论&#xff1a;因为有ABCD…等等理由&#xff0c;比如降低开发成本、减少重复计算等等好处 然后&#xff0c;多数人就记住了ABCD。但是&#xff0…...

【Linux】基础IO之文件操作(文件fd)——针对被打开的文件

系列文章目录 文章目录 系列文章目录前言浅谈文件的共识 一、 回忆c语言对文件操作的接口1.fopen接口和cwd路径2.fwrite接口和"w"&#xff0c;"a"方法3.fprintf接口和三个默认打开的输入输出流&#xff08;文件&#xff09; 二、过渡到系统&#xff0c;认识…...

什么是超算数据中心

超算数据中心是基于超级计算机或者是大规模的计算集群的数据中心&#xff0c;它具备高性能、高可靠性、高可用性和高扩展性这些特点&#xff0c;能够提供大规模计算、存储和网络服务的功能&#xff0c;在人工智能、科学计算、数据分析等等领域应用比较广泛。 超算数据中心有以下…...

阿里云服务器省钱购买和使用方法(图文详解)

阿里云服务器使用教程包括云服务器购买、云服务器配置选择、云服务器开通端口号、搭建网站所需Web环境、安装网站程序、域名解析到云服务器公网IP地址&#xff0c;最后网站上线全流程&#xff0c;新手站长xinshouzhanzhang.com分享阿里云服务器详细使用教程&#xff1a; 一&am…...

Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題

Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題 新搭建的FLINK集群出现的问题汇总 1.新搭建的Flink集群和Hadoop集群无法正常启动Flink任务 查看这个提交任务的日志无法发现有用的错误信息。 进一步查看yarn日志&#xff1a; 发现只有JobManager的错误日志出现了如下的…...

pandas - 数据分组统计

1.分组统计groupby()函数 对数据进行分组统计&#xff0c;主要适用DataFrame对象的groupby()函数。其功能如下。 &#xff08;1&#xff09;根据特定条件&#xff0c;将数据拆分成组 &#xff08;2&#xff09;每个组都可以独立应用函数&#xff08;如求和函数sum()&#xff0…...

Git简介和安装

一&#xff0c;Git简介 Git 是一个分布式版本控制工具&#xff0c;通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件&#xff0c;Git 仓库分为两种&#xff1a; 本地仓库&#xff1a;开发人员自己电脑上的 Git 仓库 远程仓库&#xff1a;远程…...

思维模型 布里丹毛驴效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。犹豫不决是病&#xff0c;得治&#xff5e; 1 布里丹毛驴效应的应用 1.1 犹豫不决的产品“施乐 914” 20 世纪 60 年代&#xff0c;美国一家名为施乐&#xff08;Xerox&#xff09;的公司…...

预处理、编译、汇编、链接

1.预处理 宏替换去注释引入头文件 #之后的语句都是预处理语句&#xff0c; #include<iostream> 将该文件的内容拷贝到现有文件中&#xff0c; 2.编译 3.汇编 4.链接 gcc 基于C/C的编译器 补充说明 gcc命令 使用GNU推出的基于C/C的编译器&#xff0c;是开放源代…...

面试问题?

1.面向对象的特征&#xff1f; 2.开放闭合 3.java中的泛型可以用基本类型吗&#xff1f; 4.重载和重写的区别&#xff1f; 5.string、stringbuffer、stringbuilder? 6.单例模式的实现方式有哪几种&#xff1f; 7.volicate除了保证 8.sy是重量级锁还是轻量级锁&#xff…...

pytorch 笔记:PAD_PACKED_SEQUENCE 和PACK_PADDED_SEQUENCE

1 PACK_PADDED_SEQUENCE 1.0 功能 将填充的序列打包成一个更加紧凑的形式这样RNN、LSTM和GRU等模型可以更高效地处理它们&#xff0c;因为它们可以跳过不必要的计算 1.2 基本使用方法 torch.nn.utils.rnn.pack_padded_sequence(input, lengths, batch_firstFalse, enforce_…...

Ubuntu 创建用户

在ubuntu系统中创建用户&#xff0c;是最基本的操作。与centos7相比&#xff0c;有较大不同。 我们通过案例介绍&#xff0c;讨论用户的创建。 我们知道&#xff0c;在linux中&#xff0c;有三类用户&#xff1a;超级管理员 root 具有完全权限&#xff1b;系统用户 bin sys a…...

华为政企路由器产品集

产品类型产品型号产品说明 maintainProductA821 E_2*10GE/GE/FE(o)8*GE/FE(o)8*GE/FE(e),1*交流电源华为企业云端NetEngine A800 E综合业务一体化接入路由器是华为公司面向云时代推出的一款产品&#xff0c;用于企业快速接入网络&#xff0c;具备易部署、易运维、高性能、高…...

性能测试知多少---了解前端性能

我的上一篇博文中讲到了响应时间&#xff0c;我们在做性能测试时&#xff0c;能过工具可以屏蔽客户端呈现时间&#xff0c;通过局域网的高宽带可以忽略数据传输速度的障碍。这并不是说他们不会对系统造成性能影响。相反&#xff0c;从用户的感受来看&#xff0c;虽然传输速度受…...

Docker-compose容器群集编排管理工具

目录 Docker-compose 1、Docker-compose 的三大概念 2、YAML文件格式及编写注意事项 1&#xff09;使用 YAML 时需要注意下面事项 2&#xff09;ymal文件格式 3&#xff09;json格式 3、Docker Compose配置常用字段 4、Docker-compose的四种重启策略 5、Docker Compose…...

Python 深度学习导入的一些包的说明

Python 深度学习导入的一些包的说明 这段代码导入了一些Python库和模块&#xff0c;并定义了一些数据转换操作。 from future import print_function, division&#xff1a;这是一个Python 2和Python 3兼容性的导入语句。它确保在Python 2中使用Python 3的print函数和除法运算符…...

劲升逻辑与安必快、鹏海运于进博会签署合作协议,助力大湾区外贸高质量发展

新中经贸与投资论坛签约现场 中国上海&#xff0c;2023 年 11 月 6 日——第六届进博会期间&#xff0c;由新加坡工商联合总会主办的新中经贸与投资论坛在上海同期举行。跨境贸易数字化领域的领导者劲升逻辑与安必快科技&#xff08;深圳&#xff09;有限公司&#xff08;简称…...

hivesql,sql 函数总结:

1、NVL函数与Coalesce差异 -- select nvl(null,8); -- 结果是 8 -- select nvl(,7); -- 结果是"" -- select coalesce(null,null,9); -- 结果是 9 -- select coalesce("",null,9); -- 结果是 "" 1.2、 NVL函数与Coalesce差异 …...

前端js实现井字游戏和版本号对比js逻辑【适用于vue和react】

// 实现 compareVersion 方法&#xff0c;用于比较两个版本号&#xff08;version1、version2&#xff09; * 如果version1 > version2&#xff0c;返回1&#xff1b; * 如果version1 < version2&#xff0c;返回-1&#xff1b; * 其他情况&#xff0c;返回0。 * 版本号规…...

unity 通过Andriod arr 访问 手机自带的浏览器

unity 通过Andriod arr 访问 手机自带的浏览器 using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEngine.UI;public class OpenURL : MonoBehaviour {public Button button;string url "http://192.168.1.…...

MySQL -- 索引

MySQL – 索引 文章目录 MySQL -- 索引一、索引简介1.简介2.索引效率的案例 二、认识磁盘1.磁盘2.结论3.磁盘随机访问(Random Access)与连续访问(Sequential Access) 三、MySQL 与磁盘交互基本单位1.基本单位2.MySQL中的数据管理 五、索引的理解1.索引案例2.单页mysql page3.管…...

23ccpc(最长上升子序列题解)

你原本有一个 1 到 n 的排列但是不慎地你遗忘了它但是你记得以 第i个位置 结尾的最长上升子序 列的长度数组 an 现在希望你能够构造一个符合条件的排列 p 如果不存在符合上述条件的排列 p 则输出 −1。 这里定义以 第i位置 结尾的最长上升子序列的长度为符合…...

BUUCTF easycap 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件&#xff0c;解压得到一个.pcap文件。 密文&#xff1a; 解题思路&#xff1a; 1、这道题和它的名字一样&#xff0c;真的很easy。双击easycap.pcap文件&#xff0c;打开Wireshark。在Wireshark中&#xf…...

[LeetCode]-160. 相交链表-141. 环形链表-142.环形链表II-138.随机链表的复制

目录 160.相交链表 题目 思路 代码 141.环形链表 题目 思路 代码 142.环形链表II 题目 思路 代码 160.相交链表 160. 相交链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 题目 给你两个…...

聊一聊关于手机Charge IC的电流流向

关于手机Charge&#xff0c;小白在以前的文章很少讲&#xff0c;一是这部分东西太多&#xff0c;过于复杂。二是总感觉写起来欠缺点什么。但后来想一想&#xff0c;本是抱着互相学习来写文章的心理态度&#xff0c;还是决定尝试写一些。 关于今天要讲的关于手机Charge的内容&a…...