153. 寻找旋转排序数组中的最小值

理论在考查二分查找的办法

补充常识

double 转 int,是间接舍去小数。
负数:

向上取整或者向下取整四舍五入

Math.ceil(),Math.floor(),Math.round()

思路:

旋转后的数列会呈现以下两种状况:

  • while循环只能抉择Left和Right的起因
  • 判断条件只能选p和Right的起因(红框为条件,蓝框为抉择后果)

    • p>R,只有pR这一种抉择;

    • p<R,有这两种状况,判断后的操作都是抉择互补段Lp

    • 而对于p>L,有两种状况,判断后的操作第一个选pR段,第二个选Lp段,无奈辨别
    • p<L只有一种Lp状况。

  • 抉择好某一段,应该是L = p + 1,而不是R = R - 1 的起因

    • p>R,p必然在最大值及往前,所以L=p+1,要么nums[p+1]=最小值,要么在最小值往前。选pR段,R不变。

    • p<R,p必然在最小值及往后,所以R=p,当nums[p]=最小值时,R=p-1就会跳过最小值。选Lp段,L不变。

  • 最终返回 p L R都行

操作: