找出数组中重复的数字---多思路
问题:找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
限制:
2 <= n <= 100000
解题思路:
1.利用HashSet,因为HashSet不允许集合中出现重复的元素,通过将数组元素添加到HashSet中,如果元素添加失败,返回false,则元素重复,返回该元素。
2.因为元素值小于数组长度,这里利用元素下标,通过swap函数交换元素位置,将数组中的元素值与其下标值一一对应,即元素值=下标值,若在交换的过程中存在,要交换的元素值==交换位置的元素值,则交换失败,该元素在数组中重复。
代码实现
class Solution{//方法1public int findRepeatNumber(int [] nums){//hash表Set<Integer> set=new HashSet<>();int res=-1;for (int num:nums){//add失败,返回false 则找到了某个重复的元素if (!set.add(num)){res=num;break;}}return res;}//方法2public int findRepeatNumber2(int [] nums) {int n = nums.length;for (int num : nums) {if (num < 0 || num > n) {return -1;}}//利用下标交换元素,即下标值=元素值for (int i = 0; i < n; i++) {while (nums[i] != i && nums[nums[i]] != nums[i]) {//交换nums[i]和nums[nums[i]],如交换nums[0]=2和nums[2]=1swap(nums,i,nums[i]);}if (nums[i] != i && nums[nums[i]] == nums[i]) {return nums[i];}}return -1;}public void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}
}
找出数组中重复的数字---多思路相关推荐
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】
13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...
- java如何找重复数字_Java如何找出数组中重复的数字
题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...
- 图解面试题:找出数组中重复的数字?
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 01、找出数组中重复的数字
1.找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. ...
- 剑指offer 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来(leetcode有空就刷系列之找出数组中重复的数字)
数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找 ...
- JS实现找出数组中重复的数字的三种方法
分享在JS中实现--找出数组中重复数字的方法的三种 法一. 排序比较法 先排序,再通过遍历比较,若相等,则添加到结果数组中,最后对结果数组进行去重,即可得到结果. function getSameNu ...
- AcWing之找出数组中重复的数字
题目 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任意一个重复的 ...
- 找出数组中重复的数字
给定一个长度为 nn 的整数数组 nums,数组中所有的数字都在 0∼n−10∼n−1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任意一个 ...
最新文章
- php fileputcontents,在php中file_put_contents函数起什么作用呢?
- linux下grub的修复
- 代码精进之路 码农到工匠pdf_VBA代码解决方案第065讲试看内容
- mysql主从库配置方法
- Shape Context
- python3单例-python3如何运行文件夹python单例模式
- tfidf关键词提取_基于TextRank提取关键词、关键短语、摘要,文章排序
- apache启服务命令_linux系统下apache服务的启动、停止、重启命令
- Firefox下去掉密码自动填充
- 【sklearn第十四讲】决策树之分类篇
- linetv_LINE TV台湾版
- 聚沙——关于禁用UAC的解决办法(Win8 System)
- 两行代码实现精简的网站访问量统计(不蒜子)
- 打卡国潮新风尚@东莞隐贤山庄#玩转主题乐园#
- Windows系统鼠标右键菜单添加打开cmd终端
- java中图片排版_Java实现第八届蓝桥杯图形排版
- 9月8日,直播抽奖:涂鸦智能带您掘金千亿美金智能市场
- 算法笔记--极大极小搜索及alpha-beta剪枝
- 传智播客2014王保明Linux培训系列教程
- Linux学习-HaProxy代理后端Nginx
热门文章
- hive币涨幅空间大吗_空间大、油耗低,家用MPV领域的三款全能好车,你心动了吗?...
- oracle 手动批处理,Oracle 简单备份 批处理(BAT)
- 【译】Web Components简介
- Github如何删除repository(仓库)
- java TreeMap 源代码分析 平衡二叉树
- Android 源码编译相关
- 实战 Spring Cloud Gateway 之限流篇
- 分布式事务+DDD+负载均衡+服务治理已撸!微服务不就这点事?
- 58同城 Elasticsearch 应用及平台建设实践
- 阿里老员工吐槽:新员工水平差!不服管理!还不加班!我要汇报经理让对方无法转正!...