编程题:给定一个1~100的整数数组,请找到其中缺少的数字
思路:遇到这种限定范围的数组,找到重复或者缺少的数字,我的做法都是声明一个同量级的数组,按照i==array[i]的规则在我声明的数组中填入数值,没有填入 对应的数值就说明原先数组缺少了这个数字
package com.ajman;
public class Top1 {
/**
* 给定一个1~100的整数数组,请找到其中缺少的数字
* @param args
*/
public static void main(String[] args) {
int[] nums={8,8,8};
repeatnum(nums);
}
public static void repeatnum(int[] nums){
// 直接声明1~100的数组,按照数字跟数组的元素匹配进去,比如说给定的数组是{5,6,7},
// 那么我就按照base[5]=5,base[6]=6,base[7]=7,到时候就直接遍历base的数组,i==base[i]的时候,说明有相应的数值
// 为什么声明式101个数组呢?因为声明数组默认是全是0,也为了方便操作,不用给每个元素i+1去匹配数字
int[] base=new int[101];
//
for(int i=0;i<nums.length;i++){
base[nums[i]]=nums[i];
}
for(int i=1;i<base.length;i++){
if(base[i]==i){
continue;
}else{
System.out.println("缺少的数字"+i);
}
}
}
}