剑指Offer11:旋转数组的最小数字(Java)

本文介绍了一种在旋转数组中查找最小元素的高效算法。通过观察旋转数组特性,提出了一种简单直观的方法:遍历数组,当遇到第一个小于其前一个元素的数时,即为最小值。此外,还讨论了特殊情况下的处理方式。

题目描述:
在这里插入图片描述
解法思路:
    观察题目给出来的旋转数组,我们发现,最小元素的前面都是有序递增数组来的,而且它们的值都比最小元素大。所以最简单的我们直接循环遍历所有的元素,找到哪个元素比前一个元素小,那么它就是最小元素了。当然,如果是旋转数组全部都是有序递增的,或者数组的值都是一样的情况下,那么旋转数组的第一个元素就是最小元素了,直接输出即可。

代码实现:

class Solution {
    public int minArray(int[] numbers) {
        int i=1;
        while(i<numbers.length){
            if(numbers[i-1]>numbers[i]) return numbers[i];
            i++;
        }
        return numbers[0];
    }
}

执行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值