有100个连续的数字(假设1-100),随机打乱顺序,随机取出一个数字,求最快在这个数组中快速找出缺少的数字。
(1)排序后挨个查找
(2)运用hash表存储每个值,再查找
(3)巧妙的计算办法,其实现代码如下:
package com.threeTop.www;
import java.util.Random;
/**
* 寻找缺失的数字
* @author wjgs
*
*/
public class LostNumber {
/**
* 投机取巧法
* @param array
*/
public static void find(int []array)
{
int all=(1+100)*100/2;
for(int i=0;i<array.length;i++)
{
all-=array[i];
}
System.out.println("缺失的数字为:"+all);
}
public static void main(String[] args) {
//初始化100个数字
int []arrayold=new int[100];
for(int i=0;i<arrayold.length;i++)
{
arrayold[i]=i+1;
}
//打乱排序
Random rand=new Random();
int t=rand.nextInt(100);
//打印缺失的数字
System.out.println(arrayold[t]);
arrayold[t]=0;
LostNumber.find(arrayold);
}
}