Title Link: https://leetcode.com/problems/search-in-rotated-sorted-array/
Topic:
Suppose a sorted array is rotated on some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
You is given a target value to search. If found in the array is return its index, otherwise return-1.
Assume no duplicate exists in the array.
Ideas:
1, find the rotation point is the first reverse order, and then divide the array into two halves, respectively, with two points to find
2, binary search according to the results of the comparison between right and left to the orderly part of the use of two-point search.
Algorithm:
public int Search (int[] nums, int target) {int left = 0,right = Nums.length-1,mid = 0; while (left<=right) {mid = left+ (right-left)/2; if (Nums[mid]==target) {return mid; } if (Nums[left]<nums[mid]) {//then left to mid ordered if (nums[left]==target) {return left; } if (Nums[left]<=target&&target<nums[mid]) {//If target is between left and mid R ight = mid; }else{left = mid + 1; }}else{//the mid to right between the ordered if (Target==nums[right]) {return right; } if (Nums[mid]<target&&target<=nums[right]) {//If Target is between mid to right and left = mid + 1; }else{right = mid-1; }}} return-1; }
"Leetcode" Search in rotated Sorted Array