剑指 Offer 11. 旋转数组的最小数字

57 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

剑指 Offer 11. 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排 序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [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

思路比较简单,看到递增,就应该知道使用二分法啦

二分法的处理方法无非就是,一维递增、二维自增等等,处理好边界条件。

如果对二分不熟悉的朋友移到:juejin.cn/post/695289…

public int minArray(int[] numbers) {
    int low = 0;
    int high = numbers.length - 1;
    while (low <= high) {
        int pivot = low + (high - low) / 2;
        if (numbers[pivot] < numbers[high]) {
            high = pivot;
        } else if (numbers[pivot] > numbers[high]) {
            low = pivot + 1;
        } else {
            high -= 1;
        }
    }
    return numbers[low];
}
@Test
public void isminArray() {
    int[] candidates = {3,4,5,2,1,3};
    int  i = minArray(candidates);
    Assert.assertNotNull(i);
}

及时当勉励 岁月不待人

能看到这里的人呀,都是菁英。❤❤️❤️❤️❤

非常感谢

菁英们能看到这里,如果这个文章写得还不错,觉得有点东西的话 求点赞👍 求关注❤️ 求分享👥 对需要持续更新的我来说真的 非常有用!!

如果本篇博客有任何错误,请批评指教,不胜感激 !

文末福利,最近整理一份面试资料《Java面试通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:【别卷了大兄弟】