文章目录
题目描述
思路
复杂度
时间复杂度:
空间复杂度:
Code
class Solution {
/**
* Search for a rotationally sorted array(Binary search)
*
* @param nums Given array
* @param target Number to be found
* @return int
*/
public int search(int[] nums, int target) {
if (nums == null || nums.length < 1) {
return -1;
}
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
//Found
if (nums[mid] == target) {
return mid;
//Right-side interval order
} else if (nums[mid] <= nums[right]) {
//On the right
if (target >= nums[mid] && target <= nums[right]) {
left = mid + 1;
} else {
right = mid - 1;
}
} else { //Left-side interval order
//On the left
if (target < nums[mid] && target >= nums[left]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
}
return -1;
}
}