/**
* 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 "未发现错误的数字!";
}
}
本文介绍了一种高效的方法来查找一个包含1到10000个数字的乱序数组中的异常值,该异常值可能是重复的或超出范围的数字。通过使用一个辅助数组记录已出现的数字,可以快速定位到错误的数字。
,如何快速找出?&spm=1001.2101.3001.5002&articleId=7743271&d=1&t=3&u=b84d3030351a40db8646a665601e51b4)
981

被折叠的 条评论
为什么被折叠?



