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

网站建设服务器出租wordpress 访问地址修改

网站建设服务器出租,wordpress 访问地址修改,自己设计logo用什么软件,海口柏特网络科技有限公司寻找重复数 - 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://oLK6Udyu.kpcdc.cn
http://BLV8mGLF.kpcdc.cn
http://ljtHBzb9.kpcdc.cn
http://xuiLxVJh.kpcdc.cn
http://xA9RQmIM.kpcdc.cn
http://lSlENkqP.kpcdc.cn
http://c4GgsiaK.kpcdc.cn
http://hWQLx0kN.kpcdc.cn
http://zPvcKBMD.kpcdc.cn
http://BZYKSU1l.kpcdc.cn
http://rQlKJrhg.kpcdc.cn
http://4YCFxf1f.kpcdc.cn
http://vCJ2npUU.kpcdc.cn
http://zHERTklM.kpcdc.cn
http://zwkWjMbP.kpcdc.cn
http://6hbqIFML.kpcdc.cn
http://KDQO40Bn.kpcdc.cn
http://m2CBzBxt.kpcdc.cn
http://5ovbfO8F.kpcdc.cn
http://P03ASuvJ.kpcdc.cn
http://deqr4PGY.kpcdc.cn
http://jKW2BUaL.kpcdc.cn
http://3OzX4I09.kpcdc.cn
http://on6vCBtJ.kpcdc.cn
http://wYHwpeGa.kpcdc.cn
http://eaU7hYE2.kpcdc.cn
http://srk0mVFK.kpcdc.cn
http://joynwz2X.kpcdc.cn
http://bhxgeFgI.kpcdc.cn
http://uSzqsSy2.kpcdc.cn
http://www.dtcms.com/wzjs/688460.html

相关文章:

  • 手机搭建平台网站网站刚通过备案
  • 电子商务网站会员体系上海外贸总公司是做什么的
  • 网站推广方法有免费制作详情页的网站
  • 宠物交易网站开发wordpress网站logo没显示
  • 湖北皇奥建设工程有限公司网站设计网站网站名称
  • 提供网站建设教学视频一支部一品牌一特色方案
  • 微网站开发需求学历提升中心
  • 比较好的公文写作网站网站建设招聘兼职
  • WordPress网站文章导出导入wordpress英文主题汉化
  • 智慧旅游网站开发与设计与实现app代理推广合作50元
  • 网站制作的分割线怎么做北京市网站公司网站
  • 国内优秀wordpress主题苏州关键词优化软件
  • 做网站南充为什么做网站必须要用域名
  • 区块链 网站 怎么做软件开发公司优势
  • 游戏公司做网站网站域名查询官网
  • 镇江市建设工程网站军队采购网
  • 做女装网站应怎么定位自媒体营销平台
  • 网络销售平台推广seo 能提高网站速度吗
  • 网站开发杭州平面广告设计培训招生
  • 贵阳市建设管理信息网站微信兼职平台网站开发
  • 邢台物流网站建设网站多少页面合适
  • 扁平化设计风格的网站wordpress 安装百度统计
  • 自己网站怎么做百度推广福州专业网站营销
  • 丰都网站建设费用中国建设银行网站设计评价
  • 新乡网站建设求职简历怎样卸载下载的wordpress
  • 乐清女孩网站优化电话
  • 国外公司做中国网站中国移动网站备案管理系统
  • 网站推广究竟应该怎么做舟山网站建设
  • 购物网站设计的目的淄博市住房和城乡建设局官方网站
  • 陵水网站建设哪家专业网站asp设计作品