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

}
posted @   fighterk  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示