diff --git a/Search in Rotated Sorted Array.cpp b/Search in Rotated Sorted Array.cpp new file mode 100644 index 0000000..fd63b65 --- /dev/null +++ b/Search in Rotated Sorted Array.cpp @@ -0,0 +1,45 @@ +class Solution { +public: + int prevElement(vector& nums){ + int n=nums.size(); + int start=0; + int end=n-1; + if(nums[0]=nums[mid]) + end=mid-1; + } + return -1; + } + int bSearch(vector& nums, int start, int end, int target){ + while(start<=end){ + int mid=start+(end-start)/2; + if(target == nums[mid]) + return mid; + else if(target < nums[mid]) + end=mid-1; + else + start=mid+1; + } + return -1; + } + int search(vector& nums, int target) { + int index = prevElement(nums); + int first = bSearch(nums, 0, index-1, target); + int second =bSearch(nums, index, nums.size()-1, target); + if(first>=0 && second==-1) + return first; + else if(first == -1 && second>=0) + return second; + else + return -1; + } +};