把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。要求时间复杂度为 O(logn)
javascript 代码实现:
/**
* @param {number[]} nums
* @return {number}
*/
var search = function(nums) {
let start = 0;
let end = nums.length-1;
let middle = start;
if(nums[start]<=nums[end]){
return nums[middle];
}
while(nums[start]>=nums[end]){
if(end-start==1){
middle=end;
break;
}
//判断中间位置的数字位于哪一个递增子数组
middle = Math.floor((start+end)/2);
if(nums[middle]>=nums[start]){
start = middle;
}else if(nums[middle]<=nums[end]){
end = middle;
}
}
return nums[middle];
};