求最小空余可用id
作者:互联网
package demo;
public class P43 {
//乱序整型数组,元素为在用的id(从1开始),求最小空余可用id
//思路1:创建(length+1)数组,下标对应id,id<=length且用过则值设为1
//思路2:用分区法,不断二分。如果下标+1==id,说明左区和mid都用过,再从右区找;否则说明左区有空余,再从左区找。
public static void main(String[] args) {
int[] arr= {4,2,3,5,6,1};
System.out.println(smallestId(arr));
}
static int smallestId(int[] arr) {
int[] helper=new int[arr.length+1];
for(int i=0;i<arr.length;i++) {
if(arr[i]<=arr.length) {
helper[arr[i]]=1;
}
}
for(int i=1;i<=arr.length;i++) {
if(helper[i]==0) {
return i;
}
}
return arr.length+1;
}
}
标签:arr,int,左区,最小,static,空余,id 来源: https://www.cnblogs.com/fighterk/p/16216623.html