Leetcode 33. Search in Rotated Sorted Array
class Solution {
public:
int search(vector<int>& nums, int target) {
//auto pos = std::is_sorted_until(nums.begin(),nums.end());
//int pivot = pos-nums.begin();
if(nums.empty())
return -1;
int left = 0,right = nums.size()-1;
while(left <= right){
int mid = (left + right)/2;
if(nums[mid] == target)
return mid;
else if(nums[mid] < nums[right]){
if(nums[mid] < target && nums[right] >= target)
left = mid + 1;
else
right = mid -1;
} else{
if(nums[mid] > target && nums[left] <= target)
right = mid -1;
else
left = mid + 1;;
}
}
return -1;
}
};