1-10000这10000个数乱序的写出来,但是其中有个数字写错了(可能重复,或者不是1-10000中的数字),如何快速找出?
2012-07-13 11:03
288 查看
/**
* 1-10000这10000个数乱序的写出来,但是其中有个数字写错了(可能重复,或者不是1-10000中的数字),如何快速找出?
*/
package com.java.demo.algorithm;
public class FindNum {
/**
* @param args
*/
public static void main(String[] args) {
int[] array = {1,3,2,4,5,6,10,9,8,1};
System.out.println(findTheErrorNum(array));
}
private static String findTheErrorNum(int[] dest){
int length = dest.length;
int[] array = new int[length];
for (int i = 0; i < length; i++) {
int k = dest[i];
if (k <= 0 || k > length) {
//因为前提就是数组中的数字是1-10000,因此当数字小于等于0,或者大于10000时就是错误的数字,直接返回
return String.valueOf(k);
}
if (array[k-1] == 0) {
array[k-1] = k;
} else {
//array中第k个数已经存上值时,当前k是重复的数字,返回
return String.valueOf(k);
}
}
return "未发现错误的数字!";
}
}
* 1-10000这10000个数乱序的写出来,但是其中有个数字写错了(可能重复,或者不是1-10000中的数字),如何快速找出?
*/
package com.java.demo.algorithm;
public class FindNum {
/**
* @param args
*/
public static void main(String[] args) {
int[] array = {1,3,2,4,5,6,10,9,8,1};
System.out.println(findTheErrorNum(array));
}
private static String findTheErrorNum(int[] dest){
int length = dest.length;
int[] array = new int[length];
for (int i = 0; i < length; i++) {
int k = dest[i];
if (k <= 0 || k > length) {
//因为前提就是数组中的数字是1-10000,因此当数字小于等于0,或者大于10000时就是错误的数字,直接返回
return String.valueOf(k);
}
if (array[k-1] == 0) {
array[k-1] = k;
} else {
//array中第k个数已经存上值时,当前k是重复的数字,返回
return String.valueOf(k);
}
}
return "未发现错误的数字!";
}
}
相关文章推荐
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 一个1~n的自然数的乱序数组,其中缺失了1到n之间的某个数,如何快速找出这个数?
- SQLServer如何快速生成100万条不重复的随机8位数字
- 随机给定10个小于10的数字(出现的数字可能重复),从其中取出3个各不相同的数字可组合出多个不同的3位数,请输出这些3位数中最大的那个3位数
- SQLServer如何快速生成100万条不重复的随机8位数字
- 有个数组中有100w个数,其中有一个数重复了50w次,要求找出这个数字
- java实现list清除重复的字符串;arraylist动态数组;角谷定理最终得1,找出10000以内哪个数字的步骤最长
- SQL里如何查询一个字段里不是数字类型的值出来
- 1、在一个由自然数1-1000中某些数字所组成的数组中,每个数字可能出现零次或者多次。设计一个算法,找出出现次数最多的数字。
- 且看如何万军丛中取上将首级 :有1000000个数,每个数取值范围是0-999999 找出其中重复的数,重复次数。
- 一个存在重复数字的正整数数列,每个数都不超过32,找出其中所有重复的数字
- 软件开发者面试百问-----有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
- 数组a[N],存放了N个数,其中某个数重复一次。 写一个函数,找出被重复的数字.时间复杂度必须为o(N)
- 开辟一个空房间,随机生成一个有30个数的整形数组,找出其中的重复数字,输出其余数字
- 生成不重复的数字,但看起来又不是顺序数出来的