From d5dde5da56da9aafcdc94d0e0f283633361c85ae Mon Sep 17 00:00:00 2001 From: Rahul Gupta <59743796+rahul22nrp@users.noreply.github.com> Date: Tue, 25 May 2021 12:23:39 +0530 Subject: [PATCH] Create Search in Rotated Sorted Array --- Search in Rotated Sorted Array | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Search in Rotated Sorted Array diff --git a/Search in Rotated Sorted Array b/Search in Rotated Sorted Array new file mode 100644 index 0000000..14358d3 --- /dev/null +++ b/Search in Rotated Sorted Array @@ -0,0 +1,32 @@ +int search(vector& nums, int target) { + if (nums.size() == 0) return -1; + + int left = 0, right = nums.size()-1; + int start = 0; + //1. find index of the smallest element + while(left < right) { + int mid = left + (right-left)/2; + if (nums[mid] > nums[right]) { + left = mid +1; + } else right = mid; + } + + //2. figure out in which side our target lies + start = left; + left = 0; + right = nums.size()-1; + if (target >= nums[start] && target <= nums[right]) + left = start; + else right = start; + + //3. Run normal binary search in sorted half. + while(left <= right) { + int mid = left + (right - left)/2; + if (nums[mid] == target) return mid; + + if (nums[mid] > target) right = mid-1; + else left = mid + 1; + } + + return -1; + }