您的位置:首页 > Web前端

【剑指offer】旋转数组中的最小数字

2016-10-12 23:52 288 查看

旋转数组中的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。

例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

解题思路

因为数组是升序的,一旦旋转,则数组中一定会出现大—>最小——>升序的情况,所以只需要遍历数组,一段出现后一个元素比当前元素小,输出后一个元素即可。

public class Solution {
public int minNumberInRotateArray(int [] array) {
if (array.length == 0){
return 0;
}
for (int i = 0; i < array.length; ++ i){
if (array[i] > array[i + 1]){
return array[i + 1];
}
}
return array[0];
}
}


这里利用了数组非降序的,不知道算不算是抖机灵,各位如果有更好的方法欢迎一起交流。

之前的【剑指offer】系列忘记给大家提供测试网址了,在这里剑指offer可以选择对应的题目,然后将代码拷贝进去提交运行就可以了,欢迎大家交流,如果有更好的方法也欢迎大家提出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: