【3】3道链表力扣题:删除链表中的节点、反转链表、判断一个链表是否有环

news2024/11/24 19:08:01

3道链表力扣题

  • 一、删除链表中的节点
    • 🌏 题目链接
    • 📕 示例
    • 🍀 分析
    • 💻 代码
  • 二、反转链表
    • 🌏 题目链接
    • 📕 示例
    • 🍀 分析
      • ① 递归
      • ② 迭代
  • 三、判断一个链表是否有环
    • 🌏 题目链接
    • 📕 示例
    • 🍀 分析
    • 💻 代码

一、删除链表中的节点

🌏 题目链接

【删除链表中的节点】https://leetcode.cn/problems/delete-node-in-a-linked-list/description/

📕 示例

在这里插入图片描述

🖊 输入: head = [4, 5, 1, 9], node = 5
🖊 输出: [4, 1, 9]
🖊 解释: 指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9

在这里插入图片描述

🖊 输入: head = [4, 5, 1, 9], node = 1
🖊 输出: [4, 5, 9]
🖊 解释: 指定链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9

在这里插入图片描述

🍀 分析

public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
        val = x;
    }
}

🖊 每一个节点就是一个 ListNode 对象
🖊 val 属性存储了具体的数据
🖊 next 属性存储了一个节点的内存地址

public class Solution {
    public void deleteNode(ListNode node) {

    }
}

🖊 deleteNode(ListNode node) 方法中,参数node是要被"删除"的节点
🖊 在该题中能够获得到的已知条件就只有这个要被删除的节点 node

🖊 已知: 要被删除的节点 node
🖊 根据已知可以得到: ① 要被删除的节点往后的所有节点 node.next.next...(这里就考虑它的下一个节点 node.next);② 可以得到节点的 valnode


在这里插入图片描述

🖊 这里的删除第三个节点,并不是把该节点从内存中移除,而是让第三个节点的值不再是【1】,而是它的下一个节点的值【9】。并且第三个节点的 next 存储它的下一个节点的 next

在这里插入图片描述

在这里插入图片描述

💻 代码

class Solution {
    public void deleteNode(ListNode node) {
        // 用被删除节点的下一个节点的值覆盖被删除节点的值
        node.val = node.next.val;
        // 被删除节点的next指向它下一个节点的next
        node.next = node.next.next;
    }
}

二、反转链表

🌏 题目链接

【206.反转链表】https://leetcode.cn/problems/reverse-linked-list/description/

📕 示例

在这里插入图片描述

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

在这里插入图片描述

🖊 输入: head = [1, 2]
🖊 输出: [2,1]

🖊 输入: head = []
🖊 输出: []

🍀 分析

class Solution {
    public ListNode reverseList(ListNode head) {

    }
}

🖊 reverseList(ListNode head) 方法只有一个参数 head(头指针),它指向了头节点

① 递归

在这里插入图片描述

👆 如上图所示,假如 reverseList 方法编写成功的话,reverseList(head) 方法调用后,该链表的头指针会指向方法调用之前的尾节点(如上图的 newHead
👆 原本的 head = [5, 4, 3, 2, 1] 也变成了 head = [1, 2, 3, 4, 5]

在这里插入图片描述

🖊 假如 reverseList(head.next) 调用成功,则整个链表如上图所示


在这里插入图片描述
在这里插入图片描述


public class Solution {
    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null) return head;

        // 递归
        ListNode newHead = reverseList(head.next);

        head.next.next = head;
        head.next = null;

        return newHead;
    }
}

② 迭代

在这里插入图片描述

🖊 已知条件就只有一个头指针 head,只能通过这个 head 进行反转


public class Solution {
    /**
     * 头插法(迭代)
     */
    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null) return head;

        ListNode newHead = null;
        do {
            ListNode tmp = head.next;
            head.next = newHead;
            newHead = head;
            head = tmp;
        } while (head != null);

        return newHead;
    }
}

三、判断一个链表是否有环

🌏 题目链接

141.判断一个链表是否有环:https://leetcode.cn/problems/linked-list-cycle/description/

📕 示例

在这里插入图片描述

在这里插入图片描述

🍀 分析

🖊 使用快慢指针思想完成
🖊 fast 指针每次 next 两步;slow 指针每次 next 一步。若有环的话,快慢指针必然相遇
🖊 如果 fast 指向 null 或 fast.next 指向 null,则链表没有环

在这里插入图片描述

💻 代码

public class Solution {
    public boolean hasCycle(ListNode head) {
        if (head == null || head.next == null) return false;

        ListNode slow = head;
        ListNode fast = head.next;

        // 【fast == null || fast.next == null】都代表链表无环
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;

            if (slow == fast) return true;
        }

        return false;
    }
}

🍀 完整代码

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

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

相关文章

学习transformer模型-Input Embedding 嵌入层的简明介绍

今天介绍transformer模型的Input Embedding 嵌入层。 背景 嵌入层的目标是使模型能够更多地了解单词、标记或其他输入之间的关系。 从头开始嵌入Embeddings from Scratch 嵌入序列需要分词器tokenizer、词汇表和索引,以及词汇表中每个单词的三维嵌入。Embedding a s…

git clone 后如何 checkout 到 remote branch

what/why 通常情况使用git clone github_repository_address下载下来的仓库使用git branch查看当前所有分支时只能看到master分支,但是想要切换到其他分支进行工作怎么办❓ 其实使用git clone下载的repository没那么简单😥,clone得到的是仓库…

一个 hipsolver 特征值示例

1,原理 通过雅可比旋转,对对称矩阵计算特征值和特征向量; 通过初等正交变换,每次把其中一个非主对角元素消成零,最终只剩主对角线非零元素为特征值,同时把初等变换累积下来,构成特征向量。 2&a…

使用1panel部署Ollama WebUI(dcoekr版)浅谈

文章目录 说明配置镜像加速Ollama WebUI容器部署Ollama WebUI使用问题解决:访问页面空白 说明 1Panel简化了docker的部署,提供了可视化的操作,但是我在尝试创建Ollama WebUI容器时,遇到了从github拉取镜像网速很慢的问题&#xf…

Java反射系列(3):从spring反射工具ReflectionUtils说起

传送门 在比较早的时候,就讨论过java反射的一些用法及概念: Java反射系列(1):入门基础 以及反射的基石Class对象! Java反射系列(2):从Class获取父类方法说起 今天就从工作中实际的例子来看看反射的应用。 兼容…

pytest--python的一种测试框架--request请求加入headers

一、request headers中的cookie和session机制的作用与区别 Cookie 和 Session 是两种在客户端和服务器之间保持状态的技术。HTTP 协议本身是无状态的,这意味着服务器无法从上一次的请求中保留任何信息到下一次请求。Cookie 和 Session 机制就是为了解决这个问题。 …

240330-大模型资源-使用教程-部署方式-部分笔记

A. 大模型资源 Models - Hugging FaceHF-Mirror - Huggingface 镜像站模型库首页 魔搭社区 B. 使用教程 HuggingFace HuggingFace 10分钟快速入门(一),利用Transformers,Pipeline探索AI。_哔哩哔哩_bilibiliHuggingFace快速入…

遥感数字图像处理的学习笔记

相关链接: 遥感数字图像处理实验教程(韦玉春)--部分实验问题回答 目录 1.什么是图像,什么是数字图像? 2.什么是遥感数字图像?模拟图像(照片)与遥感数字图像有什么区别? 3.什么是遥感数字图像…

小小狠招:巧妙使用HANA数据库的jdbc driver

SAP旗下的HANA数据库,实际上是分为两个系列进行发布,一种是基于本地部署的称之为HANA Platform。另一种是面向Cloud平台的,称之为HANA Cloud。 在实际使用当用,因为两者基本上共用同一代码库,除个别地方略有差异以外&…

C++要学到什么程度才能找到实习?

在考虑 C 学习到何种程度可以找到实习时,以下是一些具体的方向和建议。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我…

HarmonyOS 应用开发之模型切换

本文介绍如何将一个FA模型开发的声明式范式应用切换到Stage模型,您需要完成如下动作: 工程切换:新建一个Stage模型的应用工程。 配置文件切换:config.json切换为app.json5和module.json5。 组件切换:PageAbility/Serv…

如何计算KST指标,昂首资本一个公式计算

在上一篇文章中,Anzo Capital昂首资本和各位投资者一起了解了KST指标,今天我们继续分享如何计算KST指标。 首先投资者可以在时间范围9、12、18和24分析变化率值。 前三个值(时间帧9、12、18)用EMA 26平滑,最后一个值用EMA 39平滑。 然后&…

AndroidStudio出现类似 Could not create task ‘:app:ToolOperatorDemo.main()‘. 错误

先看我们的报错 翻译过来大概意思是:无法创建任务:app:ToolOperatorDemo.main()。 没有找到名称为“main”的源集。 解决方法&#xff1a; 在.idea文件夹下的gradle.xml文件中 <GradleProjectSettings>标签下添加<option name"delegatedBuild" value"f…

前端小白如何理解mvc mvp mvvm

架构、框架、设计模式是都是啥&#xff1f; 架构&#xff1a;抽象出来不同组织或者对象亦或是简单组件&#xff0c;根据需求和各个单元的功能&#xff0c;进行组合排列。 从而完成系统的运行或者是实现目标。 框架&#xff1a;使用什么样的规则&#xff0c;什么样的开发语言&…

政安晨:【Keras机器学习实践要点】(十)—— 自定义保存和序列化

目录 导言 涵盖的API Setup 状态保存自定义 构建和编译保存自定义 结论 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在…

2024年京东云主机租用价格_京东云服务器优惠价格表

2024年京东云服务器优惠价格表&#xff0c;轻量云主机优惠价格5.8元1个月、轻量云主机2C2G3M价格50元一年、196元三年&#xff0c;2C4G5M轻量云主机165元一年&#xff0c;4核8G5M云主机880元一年&#xff0c;游戏联机服务器4C16G配置26元1个月、4C32G价格65元1个月、8核32G费用…

速腾聚创上市后首份财报:冲击年销百万台,押注人形机器人

作者 |老缅 编辑 |德新 港股「激光雷达第一股」速腾聚创&#xff0c;交出了上市后的首份业绩报告。 3月27日&#xff0c;速腾聚创发布了2023年度财报。 报告期内&#xff0c;公司迎来高速的业务增长——2023年总收入达到人民币11.2亿元&#xff0c;同比增长达到111.2%。这主…

Artplayer视频JSON解析播放器源码|支持弹幕|json数据模式

全开源Artplayer播放器视频解析源码&#xff0c;支持两种返回模式&#xff1a;网页播放模式、json数据模式&#xff0c;json数据模式支持限制ip每分钟访问次数UA限制key密钥&#xff0c;也可理解为防盗链 &#xff0c;本播放器带弹幕库。 运行环境 推荐使用PHP8.0 redis扩展…

书生 浦语大模型全链路开源体系

通用大模型成为发展通用人工智能的重要途径 书生 浦语大模型的开源历程 书生 浦语 2.0体系&#xff0c;面向不同的使用需求&#xff0c;每个规格包含三个模型版本&#xff0c;&#xff08;7B、20B&#xff09;InternLM2-Base、InternLM2、InternLM2-Chat。 大模型是回归语言建…

前缀树/字典树Trie

目录 一、Trie的数据结构 二、代码示例 一、Trie的数据结构 Tire通常包括&#xff1a; 1.root节点(根节点)&#xff1a;插入、查找、删除、遍历等操作从root节点开始. 2.flag&#xff1a;结束标志true/false&#xff0c;用于表示当前节点是否为一个完整的字符串的结尾. 3.ke…