当前位置: 首页 > news >正文

LeetCode HOT100 - 寻找重复数

关键在于不能修改原数组以及只能用 O(1) 额外空间

这样排序、set、计数等方法都不行

从额外空间的角度,只能原地修改,或者说使用类似于置换环的形式

这是基于元素的数值范围在 1 到 n 之间所考虑到的,因为置换环的形式能让数字去到它应有的位置,进而达到类似于排序的效果

从这个角度,发现我们如果这样去构造这个图(也就是 i 向 a[i] 连边),那么重复元素对应的那个位置,它的入度将大于 2

因此,相当于我们要找到这个环

这可以参考之前快慢指针找环的思路

class Solution {
public:int findDuplicate(vector<int>& nums) {int fa = 0, sl = 0;while (1) {fa = nums[nums[fa]];sl = nums[sl];if (fa == sl) {break;}}fa = 0;while (sl != fa) {sl = nums[sl];fa = nums[fa];}return fa;}
};

当然,如果时间复杂度不限制为线性,那实际上也有另外一个思路,那就是值域二分,利用抽屉原理,二分答案 mid

  • 统计数组里 <= mid 的数有多少个
  • 如果数量 > mid,说明重复数在 [1, mid]
  • 否则在 [mid+1, n]
http://www.jsqmd.com/news/578264/

相关文章:

  • 5分钟搞定:Cesium/Leaflet/OpenLayers调用免费瓦片地图资源(附代码示例)
  • 国内主流CMS系统对比(2026年更新版)
  • 超自动化巡检:构筑业务连续性的第一道智能防线
  • 竞赛是否走的通
  • Spring AI 1.x 系列【22】深度拆解 ToolCallbackProvider 生命周期与调用链路
  • 2026年上海保洁服务推荐榜单:日常/精细/定点/厂房/开荒/装修后/别墅/展会/深度/商场保洁,专业高效的全场景洁净解决方案 - 品牌企业推荐师(官方)
  • 计算机毕业设计springboot在线运营工单处理系统 基于SpringBoot的客户服务工单流转与协同处理平台 SpringBoot框架下的智能运维服务请求跟踪管理系统
  • 2026年格兰富水泵厂家推荐排行榜:成套供水机组/无负压供水机组/供暖循环泵/空调循环泵/污水泵/污水提升泵/循环泵/不锈钢水泵/密封泵/螺杆泵,专业流体解决方案实力之选 - 品牌企业推荐师(官方)
  • 2026年AI风口已至!月薪3万+岗位盘点+零基础转行指南,速收藏!
  • 告别ArcGIS依赖!用QGIS 3.28把SHP属性表一键导出Excel,附赠3个数据清洗小技巧
  • 2026年 胶带厂家推荐排行榜:双面胶带/PET胶带/绝缘胶带/玛拉胶带/高温胶带/线圈胶带/保温胶带/透明胶带/警示胶带/布基胶带/美纹路胶带,精选粘接解决方案实力品牌! - 品牌企业推荐师(官方)
  • 3个AI视频总结功能让B站信息处理效率提升300%
  • 给我找一个能用的 typora 序列号 正版买了 爽 淘宝便宜 5 块
  • 3步搞定小红书无水印下载:XHS-Downloader开源神器实战全解析
  • 新闻科技简报 (2026-04-02)
  • 利用快马平台快速构建b站a8直播观看页面原型
  • 提示词合集【自用】
  • 超自动化运维的终极目标:让系统自治运行
  • 告别手动复制粘贴!用Python脚本一键搞定Labelme标注转YOLOv8训练集(附自动划分数据集)
  • Comsol 实现水岩耦合作用下围岩数值模拟
  • 如何用Python快速开发Android应用:Python for Android完整指南
  • 13-40K!AI大模型应用工程师,非常详细收藏我这一篇就够了
  • Video-subtitle-remover:让视频创作者实现硬字幕无痕去除的AI解决方案
  • 2026年 四氟防腐储罐厂家推荐榜单:四氟喷涂储罐/四氟防腐塔器/PFA喷涂储罐/衬氟管道,专注高温防腐的匠心工艺之选 - 品牌企业推荐师(官方)
  • 2026届最火的降重复率平台解析与推荐
  • ios企业签名证书创建从零到一教程最新
  • 广州PMP培训机构怎么选?才聚是标准答案
  • 拯救受损二维码:用QRazyBox实现高效恢复的4个实战策略
  • 火山方舟管理运维手册
  • CSS动画实战:5分钟搞定微信语音发送震动效果(附完整代码)