博客
关于我
【快慢指针】——LeetCode - 287. 寻找重复数
阅读量:353 次
发布时间:2019-03-04

本文共 1102 字,大约阅读时间需要 3 分钟。

题目描述

给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。

假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。

示例 1:

输入:nums = [1,3,4,2,2]

输出:2
示例 2:

输入:nums = [3,1,3,4,2]

输出:3
示例 3:

输入:nums = [1,1]

输出:1
示例 4:

输入:nums = [1,1,2]

输出:1

解题思路

哈希表

public int findDuplicate_1(int[] nums) {           HashMap
map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (!map.containsKey(nums[i])){ map.put(nums[i],map.getOrDefault(nums[i],0)+ 1); }else { return nums[i]; } } return -1; }

快慢指针

//快慢指针    public int findDuplicate(int[] nums) {           int slow=0, fast=0;        int res=0;        while(true){               //寻找相遇点            slow=nums[slow];            fast=nums[nums[fast]];            //slow从相遇点走,fast从0开始,将相遇在入环点            if(slow==fast){                   fast=0;                while(fast!=slow){                       slow=nums[slow];                    fast=nums[fast];                }                res=fast;                break;            }        }        return res;    }

转载地址:http://bser.baihongyu.com/

你可能感兴趣的文章
checksec未完待续~
查看>>
怎么去利用已有的数据做分析?
查看>>
【考研高数-高等数学-基础】第四章 不定积分
查看>>
【考研英语-基础-简单句】简单句的核心变化_谓语情态
查看>>
数据结构 第五章 二叉树-1
查看>>
PVE+集客AC+K2T-AP
查看>>
Jetson AGX Xavier硬件自启动
查看>>
判断移动端(手机)还是客户端(电脑)打开网页并跳转不同页面(首页)
查看>>
眼睛跟随鼠标转动的小黄人 html+css+js
查看>>
简单的字符串操作(注意要点)
查看>>
统计字符数
查看>>
JS 数组的 every()、some() 、filter()、findIndex() 、find()、map()方法
查看>>
Vue Element UI Upload 上传多张图片
查看>>
JS数据类型的判断
查看>>
实现一个简易Vue(三)Compiler
查看>>
仿小米商城(上)
查看>>
仿小米商城(下)
查看>>
【30】kotlin 闭包
查看>>
文件md5怎么会变化
查看>>
好玩的editText
查看>>