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--,其实跟间接遍历差不多了。

操作: