class Solution {
public int search(int[] nums, int target) {
// 左右两个边界
int left = 0, right = nums.length - 1;
// 左边界小于等于右边界
while (left <= right) {
// 左右边界相加除以二加上左边界求中点防止溢出
int mid = (right - left) / 2 + left;
// 取出中点值
int num = nums[mid];
// 中点值为目标值即返回,大于目标值即右边界缩小,反之左边界扩大
if (num == target) {
return mid;
} else if (num > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
// 找不到返回 -1
return -1;
}
}
这道题用的是二分查找法。先获取两个边界的索引,当满足左边界小于等于右边界时,取中点与目标值对比,中点值为目标值即返回,大于目标值即右边界缩小,反之左边界扩大,直到找到目标值返回,找不到则返回 -1.
leetcode原题: 704. 二分查找
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有