java - 二进制搜索细节
问题描述
我希望有人可以帮助我理解二进制搜索的代码。这是来自LeetCode,它是 Binary Search 下的“模板 2”。
我想知道为什么您将其设置为 nums.length - 它不是 nums.length - 1 有什么原因吗?
int binarySearch(int[] nums, int target){
if(nums == null || nums.length == 0)
return -1;
int left = 0, right = nums.length;
while(left < right){
// Prevent (left + right) overflow
int mid = left + (right - left) / 2;
if(nums[mid] == target){ return mid; }
else if(nums[mid] < target) { left = mid + 1; }
else { right = mid; }
}
// Post-processing:
// End Condition: left == right
if(left != nums.length && nums[left] == target) return left;
return -1;
}
解决方案
推荐阅读
- listview - 步进器在点击时未完全显示步进
- chef-infra - ubuntu 18.04 上的厨房会聚失败
- jquery - Bootstrap Dual Listbox - 一旦从选定的列表框移动到未选定的列表框,就无法将项目添加回来
- python - 如何在 jupyter 中使用交互式 seaborn 调色板?
- javascript - Plotly Dash:dash_bootstrap_components.Collapse 不折叠
- microprofile - 多个 Microprofile 实现的单一代码库
- reactjs - 使用标头中使用的状态并基于带有钩子的 Route 更新其内容
- react-native - 滚动在 React Native 中的多行水平 FlatList 中不起作用
- azure - 如何在 Azure 数据工厂中进行 Blob 存储到 API 数据传输?
- python - 同时遍历两个字符串列表