【两个月算法速成】day03-链表

news2024/10/6 10:29:54

目录

203. 移除链表元素

题目链接

思路

代码

206. 反转链表

题目链接

思路

代码

 总结


203. 移除链表元素

题目链接

力扣

思路

如下图所示就是移除链表的过程

但是值得注意的是,移除头节点和其他位置的节点是不一样的,以为头结点前面没有节点。

所以如何移除头结点,可以设置一个虚拟节点指向头结点,这样链表的所有节点的删除都可以一样删除了

如何设置头结点:

代码

/**
 * 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 node = new ListNode(-1,head);
        ListNode pre = node;
        ListNode cur = head;
        while (cur != null){
            if (cur.val == val){
                pre.next = cur.next;
            }else{
                pre = cur;
            }
            cur = cur.next;
        }
       return node.next;
    }
}

 

206. 反转链表

题目链接

力扣

思路

首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。

然后就要开始反转了,首先要把 cur->next 节点用tmp指针保存一下,也就是保存一下这个节点。

为什么要保存一下这个节点呢,因为接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时已经反转了第一个节点了。

接下来,就是循环走如下代码逻辑了,继续移动pre和cur指针。

最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。 此时我们return pre指针就可以了,pre指针就指向了新的头结点。

代码

/**
 * 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 reverseList(ListNode head) {
        ListNode temp = null;
        ListNode cur = head;
        ListNode node = null;
        while (cur != null){
            temp = cur.next;
            cur.next = node;
            node=cur;
            cur = temp;
        }
        return node;
    }
}

 总结

单链表删除节点的操作只需要前一个节点不指向原来的节点,就相当于删除了节点

添加节点也是只需要改变节点指向就行,如下图所示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日学术速递4.24

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Collaborative Diffusion for Multi-Modal Face Generation and Editing(CVPR 2023) 标题:多模态人脸生成和编辑的协同扩散 作者:Ziqi Huang, Kelvin C.K. …

Vue3进阶使用详解(node.js、Vue3路由基础项目、axios的使用详细(实现数据分页---前后端分离)、axios加载失败)

Vue3进阶使用详解(node.js、Vue3路由基础项目、axios的使用详细(实现数据分页—前后端分离)、axios加载失败) Vue cli CLI是Commond-Line Interface,翻译为命令界面,又称脚手架。VueCLI是一个官方发布vue.js项目脚手架。使用VueCLI可以快速搭建vue开发…

【IAR工程】STM8S基于ST标准库读取DHT11数据

【IAR工程】STM8S基于ST标准库读取DHT11数据 ✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!🍁对于文中所提供的相关资源链接将作不定期更换。&…

HTTP协议 GET和POST区别 请求响应 Fiddler postman ajax

💖 欢迎来阅读子豪的博客(JavaEE篇 🤴) 👉 有宝贵的意见或建议可以在留言区留言 💻 欢迎 素质三连 点赞 关注 收藏 🧑‍🚀码云仓库:补集王子的代码仓库 不要偷走我小火…

Mac下nvm安装使用

​欢迎光临我的博客查看最新文章: https://river106.cn 1、简介 nvm 是 Mac 下的 node.js 管理工具。可以通过 nvm 安装和切换不同版本的 node.js。 官网:https://nvm.uihtm.com/ github:https://github.com/nvm-sh/nvm 2、安装 curl -o- https://raw…

移动端适配rem方案

做移动端的适配我们就是要考虑,对于不同大小的手机屏幕,怎么动态改变页面布局中所有盒子的宽度高度、字体大小等。 这个问题我们可以使用相对单位rem。 那么什么是 rem? rem(font size of the root element)是指相对…

Linux-中断和时间管理(上)

目录 中断的进入过程 中断的进入过程 为方便实验,本章以配套的目标板 FS4412为例来介绍 Linux 的中断子系统,并且编写相应的中断处理程序。FS4412 上的处理器是 SAMSUNG公司的 Exynos4412,该处理器使用的是4核的 Cortex-A9,&…

c++Lambda匿名函数

cLambda匿名函数 (1) 定义a. [外部变量方位方式说明符]b. (参数)c. mutabled.noexcept/throw()e.->返回值类型f.函数体 2)c11中的拉姆达表达式中的()可以省略吗 所谓匿名函数,简单地理解就是没有名称的函…

《C++ Primer Plus》(第6版)第17章编程练习

《C Primer Plus》(第6版)第17章编程练习 《C Primer Plus》(第6版)第17章编程练习1. 计算输入流中第一个\$之前的字符数目2. 将键盘输入(直到模拟的文件尾)复制到通过命令行指定的文件中3. 将一个文件复制…

完全免费的基于区块链和 IPFS 的去中心化博客平台

一、前言 xLog是一个基于Crossbell区块链的博客解决方案,专注于Web3数据由用户掌控。Crossbell是一个基于Web3技术的去中心化博客平台,用户可以在该平台上发布文章并进行交流和创作。社区提供多种交流平台和有奖创作活动。 xLog是基于 Crossbell 区块链…

【AI回复】“我问它,你对五一调休怎么看”

前言 马上就要到五一啦,放假打算去哪里玩呢? “我肯定是宅在家里写博客啊” 最近五一调休在某博上引起大家的共鸣,看了评论那叫一个惨不忍睹哇。 因为我比较对AI感兴趣,所以想看看它是怎么看待调休的。 首先,在百度…

【UE】简易的水材质

引擎版本:4.26 效果 步骤 1. 创建一个材质,命名为“M_Water” 2. 打开“M_Water”,将混合模式设为半透明, 光照模式设为表面半透明体积,在这种模式下我们可以使用金属度、粗糙度等接口 3. 创建一个4维常量节点&…

Android 基于NumberPicker自定义弹出窗口Dialog整合日期选择器

Android实现把年月选择器放到AlertDialog中_左眼看成爱的博客-CSDN博客 Android使用NumberPicker实现年月滚动选择器_左眼看成爱的博客-CSDN博客 前面两篇文章我们分别讲了 1,如何用NumberPicker实现年月选择器 2,如何把1中的用NumberPicker实现的年…

基于DE2-115平台实现VGA显示器的显示实验

目录 什么是VGA协议VGA显示原理VGA时序图VGA参数图实验记录准备PLLROM取模代码data_drive.vkey_debounce.vvga_drive.vvga_top.v 实验现象 什么是VGA协议 这一部分摘录自野火的征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》2021.7.10(上)…

ctfshow web入门phpcve web311-315

1.web311 通过抓包发现php版本时为PHP/7.1.33dev 漏洞cve2019-11043 远程代码执行漏洞 利用条件: nginx配置了fastcgi_split_path_info 受影响系统: PHP 5.6-7.x,Nginx>0.7.31 下载工具进行利用 需要安装go环境 yum install golang -y …

一文技术解析ART虚拟机method tracing

一、method tracing介绍 概述 这个是谷歌提供的对java的函数级trace工具,和systrace只支持打点不同,method tracing能支持到函数,看到具体的函数执行时间,准确的分析出来执行的时间短板。 1.生成trace的方式 sampling方式&…

【数据结构初阶】第七节.树和二叉树的性质

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 一、树 1.1 树的概念 1.2 树的结点分类 1.3 结点之间的关系 1.4 树的存储结构 1.5 其他相关概念 二、 二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4…

快速上线chatGPT软件

ChatGPT是一个由OpenAI开发的自然语言处理模型,您无法将其直接上线。但是,如果您想要在您的应用程序中集成对话系统或聊天机器人,您可以探索以下步骤: 选择开发工具:选择一个适合您的编程语言和平台的开发工具&…

C++ [STL之string的使用]

本文已收录至《C语言和高级数据结构》专栏! 作者:ARMCSKGT 文章目录 前言正文编码basic_string类说明basic_string实例成员关于string string类模块构造函数空间大小相关字符串长度及容量大小清空字符串和空串查询字符串大小和容量设置 访问与遍历头尾元…

探索【Stable-Diffusion WEBUI】的插件:界面与中文翻译

文章目录 (零)前言(一)主题(kitchen Theme)(二)对照翻译(Bilingual Localization)(三)自行翻译(四)提示词翻译…