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

站群系统程序网站程序基础

站群系统程序,网站程序基础,包头整站优化,成功做网站寻找重复数 - LeetCode 287 题解笔记 问题描述 给定一个包含 n 1 个整数的数组 nums,其数字都在 [1, n] 范围内(包括 1 和 n),已知至少存在一个重复的整数。假设 nums 只有一个重复的整数,返回这个重复的数。 要求…

寻找重复数 - LeetCode 287 题解笔记

问题描述

给定一个包含 n + 1 个整数的数组 nums,其数字都在 [1, n] 范围内(包括 1 和 n),已知至少存在一个重复的整数。假设 nums 只有一个重复的整数,返回这个重复的数。

要求

  • 不修改数组 nums
  • 只使用常量级 O(1) 的额外空间

解题思路

方法一:快慢指针法(Floyd判圈算法)

核心思想

将数组视为链表,利用快慢指针检测环的存在并找到环的入口:

  1. 数组映射为链表

    • 索引作为节点
    • 数组值作为指向下一个节点的指针
  2. 重复数字必然形成环

    • 因为多个索引指向同一个值
    • 例如 nums = [1,3,4,2,2] → 0→1→3→2→4→2→4→…(在2和4之间形成环)
算法步骤
  1. 第一阶段:检测环

    • 快指针每次走两步,慢指针每次走一步
    • 当两者相遇时,确认存在环
  2. 第二阶段:找到环入口

    • 将慢指针重置到起点
    • 快慢指针改为每次各走一步
    • 再次相遇点即为重复数字
class Solution {public int findDuplicate(int[] nums) {// 初始都从第一个元素开始int slow = nums[0];int fast = nums[0];// 第一阶段:找到相遇点do {slow = nums[slow];fast = nums[nums[fast]];} while (slow != fast);// 第二阶段:找到环的入口slow = nums[0];while (slow != fast) {slow = nums[slow];fast = nums[fast];  // 这里应该是单步移动,不是双步}return slow;}
}
复杂度分析
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

方法二:二分查找法

核心思想

利用抽屉原理进行二分查找:

  1. 数值范围二分

    • 在[1,n]范围内二分
    • 统计小于等于mid的数的个数
  2. 调整搜索范围

    • 如果计数 > mid,说明重复数在左半区
    • 否则在右半区
class Solution {
public:int findDuplicate(vector<int>& nums) {int n = nums.size();int l = 1, r = n - 1, ans = -1;while (l <= r) {int mid = (l + r) >> 1;int cnt = 0;for (int i = 0; i < n; ++i) {cnt += nums[i] <= mid;}if (cnt <= mid) {l = mid + 1;} else {r = mid - 1;ans = mid;}}return ans;}
};
复杂度分析
  • 时间复杂度:O(n log n)
  • 空间复杂度:O(1)

关键点说明

  1. 为什么快慢指针能工作

    • 重复数字导致多个节点指向同一个节点
    • 形成环后,快指针最终会追上慢指针
  2. 边界条件处理

    • 数组长度至少为2(因n≥1)
    • 保证只有一个重复数字
  3. 与常规链表环检测的区别

    • 不需要实际构建链表
    • 直接利用数组索引和值的映射关系

文章转载自:

http://TL8OWZRB.rrhgx.cn
http://gQiAhPLT.rrhgx.cn
http://00Maulzq.rrhgx.cn
http://iXlySZ6D.rrhgx.cn
http://FgO5yTU4.rrhgx.cn
http://tWH4hZ1b.rrhgx.cn
http://dNdmHzVO.rrhgx.cn
http://fCIgfxzq.rrhgx.cn
http://FR0bHgT3.rrhgx.cn
http://sBjGzPCq.rrhgx.cn
http://42TRv7R9.rrhgx.cn
http://4t71ppp0.rrhgx.cn
http://gE5JHkgv.rrhgx.cn
http://KuZFrdIO.rrhgx.cn
http://KJG1DeFU.rrhgx.cn
http://ZpJyk9oC.rrhgx.cn
http://KoZkS3Vq.rrhgx.cn
http://YNLPxmIL.rrhgx.cn
http://VU4npfhg.rrhgx.cn
http://uwQUul9i.rrhgx.cn
http://SlJBJSd2.rrhgx.cn
http://YCkvLbgt.rrhgx.cn
http://W5MeAptc.rrhgx.cn
http://Kuz6YVC1.rrhgx.cn
http://Hk7ibjUt.rrhgx.cn
http://RPQpdk6A.rrhgx.cn
http://4S7Frgbk.rrhgx.cn
http://V9f4xy3g.rrhgx.cn
http://0N3ed88u.rrhgx.cn
http://PxP9bXbG.rrhgx.cn
http://www.dtcms.com/wzjs/685571.html

相关文章:

  • 网站建设公司专业网站开发需求企业电话名录
  • 嘉兴本地推广网站有哪些网站权重能带来什么作用
  • 网站自动生成系统深圳建外贸网站公司
  • 物流网站公司密云网站开发公司
  • 做网站找哪里免费资料网站网址下载
  • 网站首页按钮图片网页设计学习内容
  • 九江巿建设局网站知名品牌策划设计公司
  • 钓鱼网站到底怎么做中国科技网官网
  • 梅州做网站公司wordpress 后台菜单修改
  • 微网站的定义建设工程服务中心是做什么的
  • 自适应网站做推广烟台网站改版
  • 泰安做网站公司猫咪网站模版下载
  • 江苏苏中建设集团股份有限公司网站wordpress 企业网站主题
  • 张家港哪家做企业网站网站建设价格标准报价
  • 360搜索建站node.js 做网站
  • 因网站开发需要扁平化 公司网站
  • 免费装修效果图网站网站开发学那种语言
  • 宁波建网站外包自己做的网站项目面试
  • 公司做网站的费用会计分录广告公司属于什么行业
  • 怎么做cpa网站wordpress 栏目分页
  • 东方市住房和城乡建设局网站关键词录入榜
  • 购物型网站怎么快速被百度收录网站开发工程师工资
  • 品牌网站制作网站公司有没有做生鲜配送的网站
  • 怎么把自己做的网站放到公网上网站被降权了怎么办
  • 网站建设参考书籍免费网页空间代码
  • 明港网站建设公司云南网站建设维修公司
  • 郑州 (网站建设如何外贸营销推广
  • 网站出现搜索域名怎么解析到服务器上
  • 网站系统有哪些网站备案 照片
  • 四川省凉亭建设工程有限公司网站wordpress模板更换