题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
分析:数组旋转后会变为一个局部有序的数组,分为两部分,都是递增的。查找最小元素,我们首先想到的时冒泡排序一遍,或者一趟选择排序。或者直接找出a[i]<a[i-1]的点即为要查找的点。也可利用折半查找,判断最小值所在的一侧。
1 import java.util.ArrayList;
2 public class Solution {
3 public int minNumberInRotateArray(
int[] array) {
4 if(array==
null||array.length==0
){
5 return 0
;
6 }
7 if(array.length==1||array[0]<array[array.length-1
]){
8 return array[0
] ;
9 }
10 if(array.length==2
){
11 return Math.min(array[0], array[1
]) ;
12 }
13 int min = array[0
] ;
14 for(
int i = 1 ; i <array.length ;i++
){
15 if(array[i]<
min){
16 min =
array[i] ;
17 }
18 }
19 return min ;
20 }
21 }
第二种方法
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(
int [] array) {
if (array.length == 0)
return 0;
///not a[0]
for (
int i = 1; i < array.length; ++
i) {
if (array[i] < array[i - 1])
return array[i];
}
return array[0
];
}
}
转载于:https://www.cnblogs.com/huntertoung/p/4759986.html