admin管理员组文章数量:1794759
二分查找一>0~n
1.题目:
2.解析: 方法一:用哈希表:记录存在的数字,找到哈希表为空的数字输出
代码语言:javascript代码运行次数:0运行复制Set<Integer> set = new HashSet<>();
for(int x : records) set.add(x);
for(int i = 0; i < set.size(); i++){
if(!set.contains(i)) return i;
}
return set.size();
方法二:位运算异或
代码语言:javascript代码运行次数:0运行复制int ret = 0;
for (int i = 0; i < records.length; i++) {
ret ^= records[i];
ret ^= i + 1;
}
return ret;
方法三:直接遍历
代码语言:javascript代码运行次数:0运行复制int ret = 0;
for(int i = 0; i < records.length; i++){
if(records[i] != i) return i;
}
return records.length;
方法四:二分查找:
注意:特殊情况整个数组元素及对应下标都一样时
int left = 0,right = records.length-1;
while(left < right){
int mid = left + (right - left) / 2;
if(records[mid] == mid) left = mid+1;
else right = mid;
}
//特殊情况:整个数组元素及对应下标都一样时
return records[left] == left ? left+1 : left;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-11,如有侵权请联系 cloudcommunity@tencent 删除intreturnset遍历数组本文标签: 二分查找一>0n
版权声明:本文标题:二分查找一>0~n 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754892508a1707845.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论