持续创作,加速成长!这是我参与「掘金日新计划 · 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、微服务、数据库、数据结构等等。获取方式:【别卷了大兄弟】