congr / world

2 stars 1 forks source link

LeetCode : 81. Search in Rotated Sorted Array II #422

Closed congr closed 5 years ago

congr commented 5 years ago

https://leetcode.com/problems/search-in-rotated-sorted-array-ii/

image

congr commented 5 years ago

Follow-up question to Search in Rotated Sorted Array

congr commented 5 years ago
class Solution {
    public boolean search(int[] nums, int target) {
        if (nums.length == 0) return false;
        int s = 0, e = nums.length-1;

        while(s <= e) {
            int m = (s+e) / 2;
            if (nums[m] == target) return true;

            if (nums[s] == nums[m] && nums[m] == nums[e]) { // !!!!!!
                s++; e--;
            }

            else if (nums[s] <= nums[m]) {
                if (nums[s] <= target && target <= nums[m]) e = m;
                else s = m+1;
            }

            else if (nums[m] <= nums[e]) {
                if (nums[m] <= target && target <= nums[e]) s = m;
                else e = m-1;
            }
        }

        return false; // not found
    }
}