其他分享
首页 > 其他分享> > 求最小空余可用id

求最小空余可用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