【刷leetcode】9.旋转数组的最小数字

题目

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。

示例 1:
输入:[3,4,5,1,2]
输出:1
示例 2:
输入:[2,2,2,0,1]
输出:0

思路

最最暴力法(不用动脑):给旋转数组从小到大排序,排在第一个的就是最小的。
暴力法:旋转数组的最小值的前一位元素一定比它大!除非这个旋转数组的所有元素都是相同的。
只要遍历旋转数组,两两比较一下大小就好。
没有看懂二分查找法/(ㄒoㄒ)/~~之后有时间再研究研究

代码

最最暴力法:

class Solution {
    
    
    public int minArray(int[] numbers) {
    
    
        Arrays.sort(numbers);
        return numbers[0];
    }
}

暴力法:

class Solution {
    
    
    public int minArray(int[] numbers) {
    
    
        for(int i=0; i<numbers.length-1; i++){
    
    
            if(numbers[i] > numbers[i+1]){
    
    
                return numbers[i+1];
            }
        }
        //循环结束,没有找到最小值。说明旋转数组中所有元素都相等
        return numbers[0];
    }
}

猜你喜欢

转载自blog.csdn.net/taroriceball/article/details/111186816
今日推荐