# [Java][BinarySearch][LeetCode] Search in Rotated Sorted Array II #81

There is an integer array `nums` sorted in non-decreasing order (not necessarily with distinct values).

Before being passed to your function, `nums` is rotated at an unknown pivot index `k` (`0 <= k < nums.length`) such that the resulting array is `[nums[k], nums[k+1], ..., nums[n-1], nums, nums, ..., nums[k-1]]` (0-indexed). For example, `[0,1,2,4,4,4,5,6,6,7]` might be rotated at pivot index `5` and become `[4,5,6,6,7,0,1,2,4,4]`.

Given the array `nums` after the rotation and an integer `target`, return `true` if `target` is in `nums`, or `false` if it is not in `nums`.

You must decrease the overall operation steps as much as possible.

Example 1:

`Input: nums = [2,5,6,0,0,1,2], target = 0Output: true`

This problem can use traverse or binary search. I think traverse is more intuition. Binary search explanations are under:
if nums[mid]=nums[left]: it’s meant, maybe array is include continuity. but we don’t know which zone is. so we need to shift left border and recalculate mid.
if nums[mid]<=nums[right]: it’s meant, right zone is increase order. we can done binary search in this zone.
except as stated above, it’s meant left zone is increase order.
after confirm which zone, we need to scale zone, until left>right.

--

--