publicintminArray(int[] numbers){int min =0;int max = numbers.length -1;while(min < max){int mid =(max + min)/2;if(numbers[mid]< numbers[max]){
max = mid;continue;}if(numbers[mid]> numbers[max]){
min = mid +1;continue;}int res = numbers[min++];for(int i = min; i <= max; i++){
res =Math.min(res, numbers[i]);}return res;}// 这段代码再当前题中永远不会执行,只是为了避免编译错误return numbers[min];}
go
funcminArray(numbers []int)int{
min, max :=0,len(numbers)-1for max > min {
mid :=(max + min)/2if numbers[mid]< numbers[max]{// 从左到右递增,最小元素应该再mid左边
max = mid
continue}if numbers[mid]> numbers[max]{// 从左到右递增,最小元素应该再mid右边
min = mid +1continue}
res := numbers[min]for i := min +1; i <= max; i++{
res =getMin(res, numbers[i])}return res;}// 这段代码再当前题中永远不会执行,只是为了避免编译错误return numbers[min]}funcgetMin(res int, i int)int{if res < i {return res
}return i
}