目录
二分查找
描述
示例 1
输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4
示例 2
输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1
提示
- 你可以假设 nums 中的所有元素是不重复的。
- n 将在 [1, 10000]之间。
- nums 的每个元素都将在 [-9999, 9999]之间。
代码
class Solution {
public int search(int[] nums, int target) {
int low=0,high=nums.length-1;
int mid;
while (low<=high){
mid=(low+high)/2;
if (nums[mid]==target){//找到目标值则返回下标
return mid;
}else if (nums[mid]<target){//中间数小于目标值,则往右边继续查找
low=mid+1;
}else{//中间数大于目标值,则往左边继续查找
high=mid-1;
}
}
return -1;
}
}

二分法很重要的一点是确定好边界,我们本题是认为查找边界都是闭区间,即在[low, high]区间内查找target,这样我们更新low和high的时候需要注意要在mid的基础上+1或者-1缩小区间,循环调节中也要加上等号low<=high。
本文详细介绍了二分查找算法的工作原理,并提供了具体的代码实现。在给定有序数组nums中,二分查找能高效地定位目标值target,返回其下标。当目标值不存在时,返回-1。关键在于不断缩小区间并判断目标值与中间值的关系。
553

被折叠的 条评论
为什么被折叠?



