33. Search in Rotated Sorted Array

33. Search in Rotated Sorted Array

Suppose an array sorted in ascending order is rotated at 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 are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

 1 /**
 2  * @param {number[]} nums
 3  * @param {number} target
 4  * @return {number}
 5  */
 6 var search = function(A, target) {
 7     //有序数组查找固定值,第一反应就是二分。 
 8     var lo = 0;
 9     var hi = A.length - 1;
10     
11     while (lo < hi) {
12         var mid = Math.floor((lo + hi) / 2);
13         if (A[mid] == target) return mid;
14         
15         if (A[lo] <= A[mid]) {
16             if (target >= A[lo] && target < A[mid]) {
17                 hi = mid - 1;
18             } else {
19                 lo = mid + 1;
20             }
21         } else {
22             if (target > A[mid] && target <= A[hi]) {
23                 lo = mid + 1;
24             } else {
25                 hi = mid - 1;
26             }
27         }
28     }
29     return A[lo] == target ? lo : -1;
30 };
原文地址:https://www.cnblogs.com/huenchao/p/7705097.html