自己的题解:一旦比数组起始数还小,一定是最小值。如果没有大于起始数的,那么就是起始数最小。
class Solution {
public int minArray(int[] numbers) {
int min = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if(numbers[i]<min) return numbers[i];
}
return min;
}
}
k神的二分法:
k神的二分法:
class Solution {
public int minArray(int[] numbers) {
int i = 0, j = numbers.length - 1;
while (i < j) {
int m = (i + j) / 2;
if (numbers[m] > numbers[j]) i = m + 1;
else if (numbers[m] < numbers[j]) j = m;
else j--;
}
return numbers[i];
}
}
class Solution {
public int minArray(int[] numbers) {
int i = 0, j = numbers.length - 1;
while (i < j) {
int m = (i + j) / 2;
if (numbers[m] > numbers[j]) i = m + 1;
else if (numbers[m] < numbers[j]) j = m;
else {
int x = i;
for(int k = i + 1; k < j; k++) {
if(numbers[k] < numbers[x]) x = k;
}
return numbers[x];
}
}
return numbers[i];
}
}