Java如何找出数组中重复的数字

 更新时间:2018年08月29日 11:53:55   作者:SCU阳光  
这篇文章主要为大家详细介绍了Java如何找出数组中重复的数字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

题目描述:找出数组中重复的数字,具体内容如下

在一个长度为n的数组里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出的是重复的数字2或者3

这个面试题是剑指offer中的面试题3,,下面我用java代码实现。

算法步骤:

 从头到尾依次扫描数组中的每个数字。

1. 当扫描到下表为i的数字时,首先比较这个数字(用m表示)是不是等于下标i;

2. 如果是,则接着扫描下一个数字;如果不是,则再拿它和第m个数字进行比较。

3. 如果它和第m个数字相等,就找到了一个重复的数字(也就是下标 i 和下标 m 的位置都出现了)

4. 如果它和第m个位置数字不相等,就把第i个数字和第 m 个数字交换。

5. 接下来我们再重复这个比较、交换的过程,知道我们发现一个重复的数字。

import java.util.Scanner;
 
public class Main {
 public static void getRepeateNum( int[] num) { 
 int NumChange;
 System.out.println("重复数字是:");
 for(int index = 0; index < num.length; index++) {
  while(num[index] != index) {
  if(num[index] == num[num[index]]) {
   System.out.print(num[index]+" ");
   break;
  } else {
   NumChange = num[num[index]];
   num[num[index]] = num[index];
   num[index] = NumChange;
  } 
  }
 } 
 }
 
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 int[] num = new int[5];  //数组长度可以自己定义
 System.out.println("请输入一组数据:");
 for(int i = 0; i < 5; i++) {
  num[i] = scanner.nextInt();
 }
 getRepeateNum(num);
 }
 
}

其实还可以使用java中的Map实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅谈springboot多模块(modules)开发

    浅谈springboot多模块(modules)开发

    这篇文章主要介绍了浅谈springboot多模块(modules)开发,详细的介绍了springboot多模块的实现,有兴趣的可以了解一下
    2017-09-09
  • 详解Spring Boot 属性配置和使用

    详解Spring Boot 属性配置和使用

    本篇文章主要介绍了详解Spring Boot 属性配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java使用junit框架进行代码测试过程详解

    Java使用junit框架进行代码测试过程详解

    单元测试就是针对最小的功能单元编写测试代码,Junit是使用Java语言实现的单元测试框架,它是开源的,Java开发者都应当学习并使用Junit编写单元测试。本文就来讲讲Junit框架的使用教程,需要的可以参考一下
    2023-02-02
  • 解决打开的idea项目maven不生效问题

    解决打开的idea项目maven不生效问题

    这篇文章主要给大家介绍了关于如何解决打开的idea项目maven不生效问题,最近在配置maven时,发现无论配置几遍,IDEA中的maven配置总会还原成默认的,所以这里给大家分享下解决办法,需要的朋友可以参考下
    2023-07-07
  • Java方法的可变参数类型实例分析

    Java方法的可变参数类型实例分析

    这篇文章主要介绍了Java方法的可变参数类型,通过实例对Java中的可变参数类型进行了较为深入的分析,需要的朋友可以参考下
    2014-09-09
  • jvm排查工具箱jvm-tools下载使用详解

    jvm排查工具箱jvm-tools下载使用详解

    这篇文章主要为大家介绍了jvm排查工具箱jvm-tools下载使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 深入理解Java设计模式之享元模式

    深入理解Java设计模式之享元模式

    这篇文章主要介绍了JAVA设计模式之享元模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2021-11-11
  • java按竖线分割的实现

    java按竖线分割的实现

    在Java中,我们可以使用split()方法按竖线分割字符串,本文将介绍如何使用Java中的字符串分割方法来按竖线进行分割,同时提供代码示例来帮助读者理解,感兴趣的可以了解一下
    2024-01-01
  • Java使用Collections.sort()排序的示例详解

    Java使用Collections.sort()排序的示例详解

    这篇文章主要介绍了Java使用Collections.sort()排序的示例详解,Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。对此感兴趣的可以了解一下
    2020-07-07
  • Java虚拟机内存区域划分详解

    Java虚拟机内存区域划分详解

    这篇文章主要介绍了Java虚拟机内存区域划分,本文逻辑清晰,可以帮助我们更好的掌握虚拟机,对我们学习java来说是一种帮助,需要的朋友可以参考下
    2021-04-04

最新评论