数组中重复的数字

来源:互联网 发布:防火知多少课件 编辑:程序博客网 时间:2024/05/29 12:34

题目描述

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

思路:创建一个256的大小的数组,然后用循环找一下是否有重复的数字,然后用随机函数去输出一个即可否则为false;

代码如下:

import java.util.ArrayList;import java.util.List;import java.util.Random;public class Solution {    public boolean duplicate(int numbers[],int length,int [] duplication) {                 if(numbers == null){                      duplication[0] = -1;                      return false;                  }                 int[] ints = new int[256];                 for(int i = 0;i<ints.length;i++){                       ints[i] = 0;                 }                 for(int i = 0;i<numbers.length;i++){                        ints[numbers[i]]++;                 }                 List<Integer> list = new ArrayList<Integer>();                 for(int i= 0;i<numbers.length;i++){                       if(ints[numbers[i]] >= 2){                               list.add(numbers[i]);                       }                 }                 if(list.size() == 0)return false;                 int[] ins = new int[list.size()];                 for(int i = 0 ;i<list.size();i++){                         ins[i] = list.get(i);                 }          Random  random = new Random();                 int a = random.nextInt(ins.length-1);                 duplication[0] = ins[a];                 return true;    }}


0 0