求最小空余可用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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?