思路:
方法一:暴力求解
方法二:二分查找,虽然看似无序,但是每一块(左、右区间)都是有序的
代码:
方法一:
class Solution {
public int minArray(int[] numbers) {
int n=numbers.length;
int min=Integer.MAX_VALUE;
for(int num:numbers){
if(num<min){
min=num;
}
}
return min;
}
}
方法二:
class Solution {
public int minArray(int[] numbers) {
int j=numbers.length-1;
int i=0,m=0;
while(i<j){
m=i+(j-i)/2;
//m在右区间,旋转点一定在m的左边
if(numbers[m]<numbers[j]){
j=m;
}
//m在左区间,旋转点一定在m的右边
else if(numbers[m]>numbers[j]){
i=m+1;
}
//numbers[m]==numbers[j]的情况
//就算删掉了最后一个元素,前面也有一个元素与numbers[j]相等
//它就是numbers