Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int search(vector<int>& nums, int target) {
- //first we need to find the pivot i.e. a[i]>a[i-1] && a[i]>a[i+1]
- int pivot=findIndexOfPivot(nums);
- cout<<pivot;
- int l=binarySearch(nums,0,pivot+1,target);
- int r=binarySearch(nums,pivot+1,nums.size(),target);
- return max(l,r);
- }
- int findIndexOfPivot(vector<int> arr){
- int start=0,end=arr.size()-1;
- while(start<end){
- int mid=start+(end-start)/2;
- if(arr[mid]<arr[0])
- end=mid-1;
- else start=mid;
- }
- return start;
- }
- int binarySearch(vector<int> arr,int start,int n,int x){
- if(start >= arr.size())
- return -1;
- int end=n-1,mid=0;
- while(start<end){
- mid=start+(end-start)/2;
- if(arr[mid]==x) return mid;
- else if(arr[mid]>x) end=mid-1;
- else start=mid+1;
- }
- if(arr[start]==x) return start;
- return -1;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement