找出数组中重复的数字。

在一个长度为 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-数组中重复的数字相关推荐

  1. java如何找重复数字_Java如何找出数组中重复的数字

    题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...

  2. 《剑指offer》——03. 数组中重复的数字——HashSet、哈希思想——java实现

    文章目录: 1.题目描述 2.解决方案 (1)HashSet方法解决 (2)哈希思想(巧解) 3.参考 1.题目描述 找出数组中重复的数字.         在一个长度为 n 的数组 nums 里的所 ...

  3. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  4. 数组-数组中重复的数字(set方法)

    题意: 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任 ...

  5. 算法练习day19——190410(数组中重复的数字、替换空格、从尾到头打印链表)

    1.数组中重复的数字 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次.请找出数组中任意一个重复的数字. ...

  6. 图解面试题:找出数组中重复的数字?

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

  7. 03. 数组中重复的数字

    链接 https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/ 难度: #简单 题目 找出数组中重复的数字. 在一个 ...

  8. leetcode 剑指 Offer 03. 数组中重复的数字 抽屉原理 一个萝卜一个坑

    找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...

  9. 3. 数组中重复的数字

    描述 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字. 示例 ...

  10. 剑指offer: 面试题03. 数组中重复的数字

    题目:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...

最新文章

  1. canva旋转图片 js_js和canvas实现旋转图片
  2. shell编程-条件判断
  3. 再见,CentOS!
  4. 图自编码器的起源和应用
  5. linux tomcat 开启apr,tomcat开启APR
  6. linux云自动化运维基础知识23(DDNS服务配置)
  7. Linux之dd命令详解
  8. java时间日期工具类_java日期处理工具类
  9. 【Jmeter篇】Jmeter分布式调度压测部署
  10. 第二轮冲刺-Runner站立会议06
  11. php igbinary_php_igbinary.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  12. unity3d高版本转化低版本
  13. Silverlight:针式打印机文字模糊的改善办法
  14. linux+livecd维修工具,使用LiveCd修复Ubuntu
  15. win7网络怎么添加一台计算机,win7网络共享的设置方法【详细步骤】
  16. 执法仪接入GB28181平台实现实时监控、对讲、报警、定位等管理
  17. [Erlang危机](3.0)过载处理
  18. 跑步耳机哪种好,适合在运动过程佩戴的耳机推荐
  19. 应急响应 - Windows启动项分析,Windows计划任务分析,Windows服务分析
  20. MSF图形化界面Viper(炫彩蛇)下载与使用

热门文章

  1. 如何解决文件夹不能删除的情况
  2. 看 Sugar 讲矩阵键盘的使用
  3. 可行性、易用性性与用户体验的区别
  4. 超星系统登录,信息爬取
  5. TeradataSQL基础
  6. composer php 扩展,Composer 增加自己Laravel的扩展
  7. 2017年6月大学英语六级真题(第一套)汉译英(每日一摸)
  8. SWPU学分绩点计算器女生版
  9. 【2018-AAAI】Spatial As Deep: Spatial CNN for Traffic Scene Understanding
  10. 十年了,从oracle 10G OCM到12C OCM