class Solution {
public int search(int[] nums, int target) {
int n = nums.length;
if (n == 0) {
return -1;
}
if (n == 1) {
return nums[0] == target ? 0 : -1;
}
int l = 0, r = n - 1;
while (l <= r) {
int mid = (l + r) / 2;
if (nums[mid] == target) {
return mid;
}
if (nums[0] <= nums[mid]) {
if (nums[0] <= target && target < nums[mid]) {
r = mid - 1;
} else {
l = mid + 1;
}
} else {
if (nums[mid] < target && target <= nums[n - 1]) {
l = mid + 1;
} else {
r = mid - 1;
}
}
}
return -1;
}
}
33. 搜索旋转排序数组
最新推荐文章于 2024-08-15 05:02:54 发布
该博客详细介绍了如何实现一个基于二分查找的搜索方法。在给定有序整数数组`nums`中查找目标值`target`,如果找到返回其索引,否则返回-1。算法首先检查数组长度,然后进行二分查找,根据中间值与目标值的关系更新搜索范围,直至找到目标值或搜索范围为空。
摘要由CSDN通过智能技术生成