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. 搜索旋轉排序數組(二分查找)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.