class Solution {
public:
int search(vector<int>& nums, int target) {
int size = nums.size();
if (size == 0) return -1;
int left = 0, right = size - 1;
while (left <= right) {
int mid = (left+right)/2;
if (target == nums[mid]) {
return mid;
}
// 判断mid是在前半有序数组,还是后半有序数组
if (nums[mid] >= nums[left]) { // 前
if (target >= nums[left] && target < nums[mid]) {
right = mid-1;
} else {
left = mid+1;
}
continue;
} else {
if (target > nums[mid] && target <= nums[right]) {
left = mid+1;
} else {
right = mid-1;
}
continue;
}
}
return -1;
}
};
leetcode.33. 搜索旋转排序数组(二分查找)
最新推荐文章于 2024-04-07 17:07:12 发布