数据结构:力扣OJ题(每日一练)

目录
题一:环形链表
思路一:
题二:复制带随机指针的链表
思路一:
本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵!
题一:环形链表
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
不允许修改 链表。
示例 1:

思路一:
定义快慢指针:slow,fast,slow每次走一步,fast每次走两步;假设到环口长度为L,环的周长为C,slow从环口到相遇点为S,如下图:slow走了:L+S fast走了:2*(L+S);当slow到环口时fast已经走了n圈到相遇时n>=1,所以fast到相遇时走了:L+n*C+S
得出运算式:L = n*C-S,结论:一个指针从起点走,一个从相遇点走,他们会在入口点相遇。

struct ListNode *detectCycle(struct ListNode *head)
{struct ListNode* slow = head;struct ListNode* fast = head;struct ListNode* newnode = head;//判断有没有相遇点while(fast && fast->next){slow = slow->next;fast = fast->next->next;//找到相遇点if(slow == fast){struct ListNode* node = slow;//分别从起点和相遇点开始走while(node != newnode){newnode = newnode->next;node = node->next;}return newnode;}}return NULL;
}
题二:复制带随机指针的链表
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。
构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。
例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。
返回复制链表的头节点。
示例 1:

输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]
思路一:
第一步:在原链表的每一个之间开辟一块相同空间的copy将val和下一个的地址复制,并改变cur->next=copy;
第二步:因为每个原链表后面都有一个复制的copy链表所以copy-> randon都可以指向自己复制的randon;核心: copy=cur-> randon->next
第三步:将copy链表从原链表head上分离出来,并将各自的节点接上。


struct Node* copyRandomList(struct Node* head) {struct Node* cur = head;while(cur){struct Node* next = cur->next;//开辟copy的节点struct Node* copy = (struct Node*)malloc(sizeof(struct Node));//复制值copy->val = cur->val;//插入copy->next = next;cur->next = copy;//向后走cur = next;}cur = head;while(cur){struct Node* copy = cur->next;if(cur->random != NULL){//copy的随机节点指向自己的随机节点copy->random = cur->random->next;}else{copy->random = NULL;}cur = copy->next;}//分离链表struct Node* copyhead = NULL;struct Node* copytail = NULL;cur = head;while(cur){struct Node* copy = cur->next;struct Node* next = copy->next;//分离copy链表if(copytail == NULL){copyhead = copytail = copy;}else{copytail->next = copy;copytail = copytail->next;}//恢复原链表cur->next = next;cur = next;}return copyhead;
}
本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵!
相关文章:
数据结构:力扣OJ题(每日一练)
目录 题一:环形链表 思路一: 题二:复制带随机指针的链表 思路一: 本人实力有限可能对一些地方解释的不够清晰,可以自己尝试读代码,望海涵! 题一:环形链表 给定一个链表的头节点…...
【论文阅读】基于深度学习的时序预测——Informer
系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...
机器学习 | Python实现GBDT梯度提升树模型设计
机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型描述模型使用参考资料基本介绍 机器学习 | Python实现GBDT梯度提升树模型设计。梯度提升树(Grandient Boosting)是提升树(Boosting Tree)的一种改进算法,GBDT也…...
elementUi表单恢复至初始状态并不触发表单验证
elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表,右侧是显示节点的详情,点击按钮应该就是新增一个规则的意思,表单内容是没有改变的,所以就把需要把表单恢复至初始状态并不触发表单…...
大模型相关知识
一. embedding 简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)…...
无法在 macOS Ventura 上启动 Multipass
异常信息 ➜ ~ sudo multipass authenticate Please enter passphrase: authenticate failed: Passphrase is not set. Please multipass set local.passphrase with a trusted client. ➜ ~ multipass set local.passphrase Please enter passphrase: Please re-enter…...
算法通关村第六关——原来如此简单
层次遍历:又叫广度优先遍历。就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,直到访问完二叉树的最后一层。 我们先看一下基础的层次遍历题,力扣102题:给你一个二叉树,请你返…...
企业权限管理(八)-登陆使用数据库认证
Spring Security 使用数据库认证 在 Spring Security 中如果想要使用数据进行认证操作,有很多种操作方式,这里我们介绍使用 UserDetails 、 UserDetailsService来完成操作。 UserDetails public interface UserDetails extends Serializable { Collecti…...
第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)
deque插入和删除 功能描述: 向deque容器中插入和删除数据 函数原型: 两端插入操作: push_back(elem); //在容器尾部添加一个数据 push_front(elem); //在容器头部插入一个数据 pop_back(); //删除容器最后一个数据 pop_front(); //删除容器…...
案例12 Spring MVC入门案例
网页输入http://localhost:8080/hello,浏览器展示“Hello Spring MVC”。 1. 创建项目 选择Maven快速构建web项目,项目名称为case12-springmvc01。 2.配置Maven依赖 <?xml version"1.0" encoding"UTF-8"?><project xm…...
【React】精选10题
1.React Hooks带来了什么便利? React Hooks是React16.8版本中引入的新特性,它带来了许多便利。 更简单的状态管理 使用useState Hook可以在函数组件中方便地管理状态,避免了使用类组件时需要继承React.Component的繁琐操作。 避免使用类组件…...
VS Spy++进程信息获取
查看进程中窗口信息。 Spy使用介绍 Windows下的程序及热键监视神器——Spy Word进程获取...
Java课题笔记~ SpringMVC概述
1.1 SpringMVC简介 SpringMVC 也叫Spring web mvc。是Spring 框架的一部分,在Spring3.0 后发布的。 1.2 SpringMVC的优点 基于MVC 架构 基于 MVC 架构,功能分工明确。解耦合。 容易理解,上手快,使用简单 就可以开发一个注解…...
SOPC之NIOS Ⅱ遇到的问题
记录NIOS Ⅱ中遇到的报错 一、NIOS II中Eclipse头文件未找到 问题:Unresolved inclusion: "system.h"等 原因:编译器无法找到头文件所在路径 解决方法: 在文件夹中找到要添加的头文件,并记录下其路径,如…...
uniapp uni-datetime-picker 日期和光标靠右
如果想在uni-datetime-picker组件中将日期和光标靠右,您可以使用自定义样式来实现。首先,您需要在页面的样式文件中定义一个类,用于定制uni-datetime-picker组件的样式。例如,你可以在App.vue或者页面的样式文件中添加以下代码&am…...
关于axios请求中的GET、POST、PUT、DELETE的一些认知
这篇写的特别好。而本文主要从实习用途中展开,不专业。 浅谈HTTP中Get、Post、Put与Delete的区别 1、Get 1、目前Get禁止使用requestBody形式传递值,如果使用了,后端会一直报错,让你确认是否有传递参数。 2、举例,模…...
go-zero 是如何做路由管理的?
原文链接: go-zero 是如何做路由管理的? go-zero 是一个微服务框架,包含了 web 和 rpc 两大部分。 而对于 web 框架来说,路由管理是必不可少的一部分,那么本文就来探讨一下 go-zero 的路由管理是怎么做的,…...
Springboot集成ip2region离线IP地名映射-修订版
title: Springboot集成ip2region离线IP地名映射 date: 2020-12-16 11:15:34 categories: springboot description: Springboot集成ip2region离线IP地名映射 1. 背景2. 集成 2.1. 步骤2.2. 样例2.3. 响应实例DataBlock2.4. 响应实例RegionAddress 3. 打开浏览器4. 源码地址&…...
智能驾驶系列报告之一:智能驾驶 ChatGPT时刻有望来临
原创 | 文 BFT机器人 L3 功能加速落地,政策标准有望明确 L2 发展日益成熟,L3 功能加速落地。根据市场监管总局发布的《汽车驾驶自动化分级》与 SAE发布的自动驾驶分级标准,自动驾驶主要分为 6 个级别(0 级到 5 级,L0 …...
设计HTML5文档结构
定义清晰、一致的文档结构不仅方便后期维护和拓展,同时也大大降低了CSS和JavaScript的应用难度。为了提高搜索引擎的检索率,适应智能化处理,设计符合语义的结构显得很重要。 1、头部结构 在HTML文档的头部区域,存储着各种网页元…...
新手也能懂!用沁恒CH579低功耗蓝牙芯片的TMOS系统点个灯(附完整代码)
从零玩转沁恒CH579:TMOS任务管理系统点亮LED全攻略 第一次拿到沁恒CH579开发板时,看着官方例程里那些TMOS相关的代码,我完全摸不着头脑——什么是TaskID?EventID又该怎么用?直到用最基础的"点灯"实验跑通了整…...
收藏!逛遍AI论坛发现:京东AI岗薪资竟碾压多家大厂?小白/程序员必看
最近沉迷逛各类AI技术论坛,每天雷打不动翻几十个帖子,其中最吸引我的,就是程序员们分享的AI求职经验帖——尤其是那种薪资爆料、offer选择类的内容,既能看个热闹,更能摸清当下AI岗位的真实市场行情,比单纯看…...
.NET后端集成:开发Windows桌面端字幕制作工具
.NET后端集成:开发Windows桌面端字幕制作工具 1. 引言 做视频的朋友们,尤其是那些需要处理大量口播、课程或者访谈内容的,应该都体会过手动加字幕的“痛苦”。一句一句听,一帧一帧对,眼睛盯着波形图,手指…...
【CLion实战】CMakeLists文件加载失败:从环境冲突到.gitignore配置的完整解决路径
1. 问题现象:当CLion突然"失明"时 那天早上我像往常一样打开CLion准备继续昨天的项目,结果发现原本好好的项目突然变成了"无头苍蝇"——CMakeLists文件加载失败,项目结构一片空白,所有代码文件都显示不可编译…...
基于Simulink的2ASK调制解调系统建模与性能对比分析
1. 2ASK调制解调系统基础入门 第一次接触通信系统仿真时,我被各种调制方式搞得头晕眼花。直到用Simulink搭建了第一个2ASK模型,才发现原来通信原理可以这么直观。**2ASK(二进制幅移键控)**是最基础的数字调制方式之一,…...
RePKG:深度解析Wallpaper Engine资源提取与纹理转换的终极方案
RePKG:深度解析Wallpaper Engine资源提取与纹理转换的终极方案 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 在Wallpaper Engine生态系统中,PKG文件提取和…...
LeetCode刷题实战:从Hot100到代码随想录的进阶之路
LeetCode刷题实战:从Hot100到代码随想录的进阶之路 在技术面试的战场上,算法题就像是一道道必须攻克的堡垒。无论是硅谷的科技巨头还是国内的互联网大厂,算法能力始终是衡量工程师基本功的重要标尺。对于准备秋招或技术面试的开发者来说&…...
SRWE:解锁Windows窗口无限可能的实时编辑神器
SRWE:解锁Windows窗口无限可能的实时编辑神器 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否曾经因为Windows应用程序的窗口限制而感到束手无策?想要调整游戏窗口大小获得高清截图…...
专业级Minecraft世界数据恢复实战指南:Region Fixer深度解析与最佳实践
专业级Minecraft世界数据恢复实战指南:Region Fixer深度解析与最佳实践 【免费下载链接】Minecraft-Region-Fixer Python script to fix some of the problems of the Minecraft save files (region files, *.mca). 项目地址: https://gitcode.com/gh_mirrors/mi/…...
从Prompt CI到Agent CD:2026奇点大会披露的4层AI原生交付架构图,已获CNCF官方收录为参考模型
第一章:2026奇点智能技术大会:AI原生持续交付 2026奇点智能技术大会(https://ml-summit.org) AI原生持续交付(AI-Native Continuous Delivery)正重新定义软件工程的生命周期边界——它不再仅关注代码构建与部署,而是将…...
