287. 寻找重复数
2023-04-18 16:12:42 时间
一. 题目:
二. 思路:
确定映射关系:数组下标 -> 数组值 有重复元素就意味着必然有两条不同起点的边映射到一个值上,即指向同一个点,因此就会产生环 [1,2,4,5,6,4,3]
index -> value
映射关系
形成了0->1->2->4->6->3->5->4->6->3的环形表
至此,问题转换为 142 题 环形链表。那么针对此题,快、慢指针该如何走呢。根据上述数组转链表的映射关系,可推出 142 题中慢指针走一步 slow = slow.next ==> 本题 slow = nums[slow] 142 题中快指针走两步 fast = fast.next.next ==> 本题 fast = nums[nums[fast]]
三. 代码:
class Solution {
public int findDuplicate(int[] nums) {
//快慢指针索引位置
int slow=nums[0], fast=nums[nums[0]];
//找到相遇结点
while (nums[slow]!=nums[fast]){
slow=nums[slow];
fast=nums[nums[fast]];
}
//找到起始结点
fast=0;
while (slow!=fast){
slow=nums[slow];
fast=nums[fast];
}
return slow;
}
}
相关文章
- Linux命令·tar
- Mac上Qt安装和配置教程
- VC++ 2019 “const char*“类型的实参与“LPCTSTR“类型的形参不兼容,的解决办法
- Mac上如何彻底卸载Vs code
- 【代码训练营】day 58 739. 每日温度 & 496.下一个更大元素 I
- C++语言Qt实现 实时任务调度仿真软件 任务参数可配置和随机生成支持多核调度
- 物联网视频监控服务 总览
- Linux命令·chmod
- 物联网视频监控服务(一)-硬件选择篇
- docker 安装 elasticsearch并使用kibana
- git文件超过100MB上传到服务器报错this exceeds GitHub file size limit of 100MB
- MIPS指令详解
- MAC怎么获取文件路径 MAC获取文件路径的四种方法
- Python PyInstaller 打包成 Win、Mac 应用程序(app / exe)
- VScode的mac版本C++配置(参考官网教程)
- ChatGPT前传
- 【云开发】- 在小程序端操作云存储
- 物联网视频监控服务(二)-硬件编码篇
- 【uniapp小程序】路由跳转navigator传参封装
- AI绘画:数字时代的提示工程新兴应用