【代码随想录】算法训练计划04

news2024/12/29 10:23:09

1、24. 两两交换链表中的节点

题目:

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

在这里插入图片描述

思路:
  • 链表这种题目吧,画个图,问题就解决了一半了

  • 另外一半就是注意条件,和需要什么变量

  • 在这里插入图片描述

// 代码一刷——虚拟头
 // 不要用反转链表的方法,要用本质的方法,模拟思考,注意需要什么变量
func swapPairs(head *ListNode) *ListNode {
    dummyHead := &ListNode{}
    dummyHead.Next = head
    cur := dummyHead
    for cur.Next != nil && cur.Next.Next != nil {
        next := cur.Next
        next2 := cur.Next.Next.Next
        cur.Next = cur.Next.Next
        cur.Next.Next = next
        next.Next = next2
        cur = cur.Next.Next
    }
    return dummyHead.Next
}

2、19. 删除链表的倒数第 N 个结点

题目:
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
在这里插入图片描述

思路:
  • 双指针法,很有意思哈
  • 快指针先走 n+1 步,接着快慢一起移动即可,注意循环条件
  • 注意快慢指针初始值
func removeNthFromEnd(head *ListNode, n int) *ListNode {
    // 代码一刷,双指针
    dummy := &ListNode{Next:head}
    slow := dummy
    fast := dummy
    for i:=0; i<=n; i++ {
        fast = fast.Next
    }
    for fast != nil {
        slow = slow.Next
        fast = fast.Next
    }
    slow.Next = slow.Next.Next
    return dummy.Next
}

3、面试题 02.07. 链表相交

题目:
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
图示两个链表在节点 c1 开始相交:
在这里插入图片描述

思路:
  • 带入试一试便知道
  • 很神奇,一起走,走到nil,就换到另一个链表起始
  • 或者也可用上一题的思路去解,快指针先走 n+1 步
func getIntersectionNode(headA, headB *ListNode) *ListNode {
    // 代码一刷——双指针
    l1, l2 := headA, headB
    for l1 != l2 {
        if l1 != nil {
            l1 = l1.Next
        } else {
            l1 = headB
        }

        if l2 != nil {
            l2 = l2.Next
        } else {
            l2 = headA
        }
    }
    return l2
}

4、142.环形链表II

题目:
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
不允许修改 链表。
在这里插入图片描述

思路:
  • 快慢指针+数学推理
  • 首先知道,快慢指针,不只是说,快的在前边,也可以是速度是慢指针的 n 倍,这里是二倍
  • 然后就是数学推理了,可以看卡尔的视频讲解
  • 注意 slow 进入圈后,slow=fast了,然后是定义一个新的头节点位置,开始循环
    在这里插入图片描述
func detectCycle(head *ListNode) *ListNode {
    // 代码一刷——双指针
    slow := head
    fast := head
    for fast != nil && fast.Next != nil {
        slow = slow.Next
        fast = fast.Next.Next
        if fast == slow {
            index1 := head
            index2 := slow
            for index1 != index2 {
                index1 = index1.Next
                index2 = index2.Next
            }
            return index1
        }
    }
    return nil
}

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

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

相关文章

自己动手搭建一个传奇是什么体验?下面是我搭建的详细教程,大家跟着教程做,不光是学会了技术,平时还可以帮朋友搭建

传奇游戏是一代人的回忆&#xff0c;它曾经风靡一时&#xff0c;让无数玩家沉迷其中。这款游戏以其独特的玩法、丰富的故事背景和深刻的角色刻画&#xff0c;吸引了一大批忠实粉丝。 在传奇游戏中&#xff0c;玩家可以体验到各种不同的职业和角色&#xff0c;每个角色都有自己…

计算机毕业设计 基于SpringBoot高校竞赛管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

javascript数据类型

目录 原始数据类型 引用数据类型 类型检测 类型转换 总结 原始数据类型 JavaScript 中有六种原始数据类型&#xff0c;它们是&#xff1a; Undefined&#xff08;未定义&#xff09;: 表示一个未被赋值的变量。Null&#xff08;空值&#xff09;: 表示一个空对象指针。B…

jetson nano刷机更新Jetpack

只是记录个人在使用英伟达jetson Nano的经历,由于头一次尝试,所以特此记录需要的问题和经验。 一,英伟达刷机教程(jetson nano 版本) 本次我是直接刷机到TF卡,然后TF卡作为启动盘进行启动,我看网上有带EMMC版本的,好像可以直接把系统镜像安装到EMMC里面。但是有个问题…

【每日一题】2558. 从数量最多的堆取走礼物-2023.10.28

题目&#xff1a; 2558. 从数量最多的堆取走礼物 给你一个整数数组 gifts &#xff0c;表示各堆礼物的数量。每一秒&#xff0c;你需要执行以下操作&#xff1a; 选择礼物数量最多的那一堆。如果不止一堆都符合礼物数量最多&#xff0c;从中选择任一堆即可。选中的那一堆留下…

ssm164学院学生论坛的设计与实现+vue

项目名称&#xff1a;ssm164学院学生论坛的设计与实现vue 点击这里进入源码目录 声明&#xff1a; 适用范围&#xff1a; 本文档适用于广泛的学术和教育用途&#xff0c;包括但不限于个人学习、毕业设计和课程设计。免责声明&#xff1a; 特此声明&#xff0c;本文仅供参考学…

赴日IT培训 日本IT行业为啥吃香?

确实现在有许多小伙伴尝到了赴日IT的甜头&#xff0c;可是去日本从事IT行业真的很简单吗&#xff1f;为什么日本的IT行业这么缺人呢&#xff1f;那今天小编就跟大家聊一聊日本的IT行业。 咱们先来说说日本的IT行业为什么缺人&#xff1f;其实不只是IT行业&#xff0c;可以说日…

Azure云工作站上做Machine Learning模型开发 - 全流程演示

目录 本文内容先决条件从“笔记本”开始设置用于原型制作的新环境&#xff08;可选&#xff09;创建笔记本开发训练脚本迭代检查结果 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0…

53. 寻宝(第七期模拟笔试)(最小生成树练习)

本题链接&#xff1a;卡码网KamaCoder 题目&#xff1a; 样例&#xff1a; 输入 7 11 1 2 1 1 3 1 1 5 2 2 6 1 2 4 2 2 3 2 3 4 1 4 5 1 5 6 2 5 7 1 6 7 1 输出 6 思路&#xff1a; 由题意&#xff0c;这里是需要遍历完全部的顶点&#xff0c;求遍历完全部点的花费最短距离…

java基础 特殊文件

1.Properties属性文件&#xff1a; 1.1使用Properties读取属性文件里的键值对数据&#xff1a; package specialFile;import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Enumeration; import java.util.Propert…

【C++】C++入门(中)--引用

目录 一 引用概念 二 引用特性 三 常引用 四 引用使用场景 1 做参数 2. 做返回值 1 例一 2 例二 3 例三 4 例四 五 传值, 传引用效率比较 六 值和引用的作为返回值类型的性能比较 七 引用和指针的区别 一 引用概念 引用不是新定义一个变量&#xff0c;而是给已存…

视频智能视觉分析真的遥不可及吗?有没有那种下载就能用的视频分析服务?

我一直有一个感觉&#xff0c;就是市面上很难找到那么一个带视频算法的软件&#xff0c;能让我们很直观地看到视频分析的效果&#xff0c;大部分都要内置在某种算力硬件上&#xff0c;或者对GPU要求比较严格&#xff0c;很难做到像以前我们做的视频直播软件那样&#xff0c;下载…

Springboot+vue地方废品回收机构管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue地方废品回收机构管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&…

牛客网刷题-(7)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

RK3568平台 sys虚拟文件系统添加节点

一.常见的linux文件系统 1. EXT2: EXT2是最早的Linux文件系统之一&#xff0c;它被广泛应用于Linux操作系统中。它支持大小为16TB的分区和最大文件大小为2TB。由于其简单性和高可靠性&#xff0c;在很长一段时间内仍被许多用户所选择。 2. EXT3: 2001年&#xff0c;Linux社区…

【100天精通Python】Day72:Python可视化_一文掌握Seaborn库的使用《二》_分类数据可视化,线性模型和参数拟合的可视化,示例+代码

目录 1. 分类数据的可视化 1.1 类别散点图&#xff08;Categorical Scatter Plot&#xff09; 1.2 类别分布图&#xff08;Categorical Distribution Plot&#xff09; 1.3 类别估计图&#xff08;Categorical Estimate Plot&#xff09; 1.4 类别单变量图&#xff08;Cat…

《C和指针》笔记35:结构体

本文整理一下结构体的相关知识&#xff0c;记录是为了更好地加深理解。 1. 结构体声明 下面两个声明语句&#xff1a; struct {int a;char b;float c; } x;struct {int a;char b;float c; } y[20], *z;这两个声明被编译器当作两种截然不同的类型&#xff0c;即使它们的成员列…

数字电路与逻辑设计 之 组合电路的设计(多输出电路,全加器,乘法器)

一些例子 多输出的电路设计 全加器 我们尝试不去弄到最简 乘法器 要分析有几个输入&#xff0c;几个输出

代码签名证书续费

代码签名证书的有效周期是1-3年&#xff0c;这种情况下证书到期了就要重新申请办理&#xff0c;最开始同样的申请验证步骤还要再走一遍&#xff0c;尤其是Ukey还是要CA机构重新颁发&#xff0c;还是要等待快递配送。OV代码签名证书、EV代码签名证书目前行业内统一采取Ukey存储&…

链动2+1全新9.0版本 无限链动收益

一个平台能否长期存活取决于它是否有一个支撑其持续发展的商业模式。蜂群精选深谙用户心理&#xff0c;对链动21模式进行改造&#xff0c;创新出一种同时具备裂变能力和高效吸引用户留存的新玩法。 链动21模式在整个架构上都是完整的&#xff0c;可以说是一个非常出色的营销模式…