关于java:11-旋转数组的最小数字

11. 旋转数组的最小数字

本题是这道题153. 寻找旋转排序数组中的最小值的延长,倡议先看这道题。

思路:

本题中的数组元素能够反复,那么除了nums[p]>nums[R] nums[p]<nums[R]的状况,还多出一种状况:nums[p] = nums[r],如图。
1、此时不晓得最小值在p的右边还是左边,无奈判定取Lp段还是pR段。
2、而晓得nums[R]是反复的,能够舍去一个。
3、因而,R–,向里挪动一个,这样既不会漏掉最小,还放大了范畴。
4、同时还会更新p,如果还相等就再来亿次。比方第二个图,就是缩了两次才找到不等的nums[p]>nums[R]。

操作:


有大佬的解析阐明了当存在nums[p] = nums[R]的状况时,j–,其实跟间接遍历差不多了。

操作:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理