有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); } }
