33 - Search in Rotated Sorted Array

 JAVA

  • class Solution {
        public int search(int[] nums, int target) {
            int n = nums.length;
            int left = 0, right = n - 1;
            while (left < right) {
                int mid = (left + right) >> 1;
                if (nums[0] <= nums[mid]) {
                    if (nums[0] <= target && target <= nums[mid]) {
                        right = mid;
                    } else {
                        left = mid + 1;
                    }
                } else {
                    if (nums[mid] < target && target <= nums[n - 1]) {
                        left = mid + 1;
                    } else {
                        right = mid;
                    }
                }
            }
            return nums[left] == target ? left : -1;
        }
    }
C++
  • class Solution {
    public:
        int search(vector<int>& nums, int target) {
            int n = nums.size();
            int left = 0, right = n - 1;
            while (left < right) {
                int mid = (left + right) >> 1;
                if (nums[0] <= nums[mid]) {
                    if (nums[0] <= target && target <= nums[mid])
                        right = mid;
                    else
                        left = mid + 1;
                } else {
                    if (nums[mid] < target && target <= nums[n - 1])
                        left = mid + 1;
                    else
                        right = mid;
                }
            }
            return nums[left] == target ? left : -1;
        }
    };

Comments