[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
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
Given the array
nums after the rotation and an integer
target is in
false if it is not in
You must decrease the overall operation steps as much as possible.
Input: nums = [2,5,6,0,0,1,2], target = 0
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.