leetcode 81搜尋旋轉排序陣列2 C++
阿新 • • 發佈:2021-01-28
利用二分查詢
1.左半部分增序,target在左邊則進行二分查詢。
2.右半部分增序,target在右邊則進行二分查詢。
class Solution {
public:
bool search(vector<int>& nums, int target) {
int start = 0, end = nums.size()-1;
while(start <= end){
int mid = (start+end)/2;
if (nums[mid] == target){
return true;
}
if(nums[start] == nums[mid]){
++start;//處理重複數字
}else if(nums[mid] <= nums[end]){
if(target > nums[mid] && target <= nums[end]){
start = mid + 1 ;
}
else{
end = mid - 1;
}
}else{
if(target >= nums[start] && target < nums[mid]){
end = mid - 1;
}
else{
start = mid + 1;
}
}
}
return false;
}
};