JAVA练习15-数组中重复的数字
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
限制:
- 2 <= n <= 100000
分析:
方法1:数组索引
因为数组 nums 里的所有数字都在 0~n-1 的范围内,而 n 为长度,所以可以定义一个长度一样的数组,nums 里的数字代表新数组的索引,每遍历一次,如果对应索引值等于一,说明重复,返回重复的值,否则将对应索引值赋为1。
class Solution {public int findRepeatNumber(int[] nums) {//定义数组存储数字次数,nums 中的数字对应 res 的索引int[] res = new int[nums.length];//遍历for(int n: nums){//对应索引值等于1表示重复出现,返回该数字if(res[n] == 1){return n;}//对应索引值等于1res[n] = 1;}return -1;}
}
方法2:交换数字
由方法1可以知道数组中每一个数字可以代表一个索引,那么为何不直接在原数组上操作,将数组上数字交换到对应的索引位置,如果该数字等于该数字对应索引的数字,说明数字重复,就返回该数字。需要注意,当索引和本身数字重复时,就跳到一下个数字进行交换。
class Solution {public int findRepeatNumber(int[] nums) {//初始索引int i = 0;//遍历while(true){//辅助变量int num = nums[i];//索引和本身数字重复,索引加1if(i == num){i++;continue;}//数字与数字对应索引处的数字重复,返回该数字if(num == nums[num]){return num;}//交换数字与数字对应索引的数字nums[i] = nums[num];nums[num] = num;}}
}
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof
JAVA练习15-数组中重复的数字相关推荐
- java如何找重复数字_Java如何找出数组中重复的数字
题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...
- 《剑指offer》——03. 数组中重复的数字——HashSet、哈希思想——java实现
文章目录: 1.题目描述 2.解决方案 (1)HashSet方法解决 (2)哈希思想(巧解) 3.参考 1.题目描述 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所 ...
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- 数组-数组中重复的数字(set方法)
题意: 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任 ...
- 算法练习day19——190410(数组中重复的数字、替换空格、从尾到头打印链表)
1.数组中重复的数字 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次.请找出数组中任意一个重复的数字. ...
- 图解面试题:找出数组中重复的数字?
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 03. 数组中重复的数字
链接 https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/ 难度: #简单 题目 找出数组中重复的数字. 在一个 ...
- leetcode 剑指 Offer 03. 数组中重复的数字 抽屉原理 一个萝卜一个坑
找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...
- 3. 数组中重复的数字
描述 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字. 示例 ...
- 剑指offer: 面试题03. 数组中重复的数字
题目:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
最新文章
- canva旋转图片 js_js和canvas实现旋转图片
- shell编程-条件判断
- 再见,CentOS!
- 图自编码器的起源和应用
- linux tomcat 开启apr,tomcat开启APR
- linux云自动化运维基础知识23(DDNS服务配置)
- Linux之dd命令详解
- java时间日期工具类_java日期处理工具类
- 【Jmeter篇】Jmeter分布式调度压测部署
- 第二轮冲刺-Runner站立会议06
- php igbinary_php_igbinary.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- unity3d高版本转化低版本
- Silverlight:针式打印机文字模糊的改善办法
- linux+livecd维修工具,使用LiveCd修复Ubuntu
- win7网络怎么添加一台计算机,win7网络共享的设置方法【详细步骤】
- 执法仪接入GB28181平台实现实时监控、对讲、报警、定位等管理
- [Erlang危机](3.0)过载处理
- 跑步耳机哪种好,适合在运动过程佩戴的耳机推荐
- 应急响应 - Windows启动项分析,Windows计划任务分析,Windows服务分析
- MSF图形化界面Viper(炫彩蛇)下载与使用