题目描述
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if (rotateArray.empty())return 0;
int left=0,right=rotateArray.size()-1;
while (left<right){
if (rotateArray[left]<rotateArray[right]) return rotateArray[left];
int mid=left+(right-left)/2;
if (rotateArray[left]<rotateArray[mid])
left=mid+1;
else if (rotateArray[mid]<rotateArray[right])
right=mid;
else {
++left;
}
}
return rotateArray[left];
}
};
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if (array.length==0)
return 0;
int left=0;
int right=array.length-1;
int middle=-1;
while (array[left]>=array[right])
{
if (right-left==1){
middle=right;
break;
}
middle=left+(right-left)/2;
if (array[middle]>=array[left]){
left=middle;
}
if (array[middle]<=array[right]){
right=middle;
}
}
return array[middle];
}
}
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
return min(rotateArray)