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

【Hot100】LeetCode—287. 寻找重复数

目录

  • 1- 思路
    • 题目识别
    • 快慢指针-类比链表判环
  • 2- 实现
    • 31. 下一个排列——题解思路
  • 3- ACM 实现


  • 原题链接:287. 寻找重复数

1- 思路

题目识别

  • 识别1 :给定一个数组,寻找数组中的重复数。必须用 O(1) 的空间复杂度,且不能修改数组。

快慢指针-类比链表判环

  • 使用思路与链表判环类似。
  • 如果用 数组的元素作为下标,则会出现环因此使用链表判环的思路。


2- 实现

31. 下一个排列——题解思路

在这里插入图片描述

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 从头开始slow = nums[0];while(slow != fast){slow = nums[slow];fast = nums[fast];}return slow;}
}

3- ACM 实现

public class findDuplicate {public static 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;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();input = input.replace("[","").replace("]","");String[] parts = input.split(",");int[] nums = new int[parts.length];for(int i = 0 ; i < nums.length;i++){nums[i] = Integer.parseInt(parts[i]);}System.out.println("结果是"+findDuplicate(nums));}
}

http://www.mrgr.cn/news/26647.html

相关文章:

  • u盘怎么重装系统_u盘重装win10系统详细图文教程【支持新旧机型】
  • ArcGIS Pro SDK (十四)地图探索 4 书签
  • 什么是WSL?
  • 近日,IBM中国宣布撤出在华两大研发中心
  • 【LLM:Fan】
  • 单体架构系统是不是已经彻底死亡?
  • 2024深圳光博会:精密光学发展,国产8K摄像机品牌追光之旅
  • 高精度治具加工的重要性和优势
  • Google Dorks 发现隐藏的端点和参数
  • sqlserver数据库sql语句易读、易维护格式
  • AWTK fscript 中的 value 扩展函数
  • UnrealEngine 打包Android平台应用
  • 串口通信协议
  • 股价跌破1美元!这家激光雷达上市公司被沃尔沃「拖进」ICU
  • 提示词工程与 AI 使用的紧密关系
  • RP2040 C SDK PWM功能使用
  • 架构师:实现接口幂等性机制的设计指南
  • 【devops】devops-git之git分支与标签使用
  • 实时分析都靠它→揭秘YashanDB列式存储引擎的技术实现
  • 2024逼自己做AI副业!月入2w+!