题解 | #在旋转过的有序数组中寻找目标值#
在旋转过的有序数组中寻找目标值
http://www.nowcoder.com/practice/87c0e7abcbda41e7963660fa7d020995
int search(vector<int>& nums, int target) { int len = nums.size(); if (len == 0) return -1; int i = 0; int j = len - 1; while (i <= j) { int mid = i + (j - i) / 2; if (nums[mid] == target) return mid; // 在左边 , e.g. [3 4 5 6 7 8 1 2] if (nums[i] < nums[mid]) { // 比如找 5 if (nums[i] <= target && target < nums[mid]) { j = mid - 1; } else { // 比如找 1 i = mid + 1; } } else { // 在右边, e.g. [7 8 1 2 3 4 5] // 比如找 3 if (nums[mid] < target && target <= nums[j]) { i = mid + 1; } else { // 比如找8 j = mid - 1; } } } return -1; }