實際在考察二分查找的方法算法
一個不包含重複元素的升序數組在通過旋轉以後,能夠獲得下面可視化的折線圖:
數組
本題是沒有重複元素的因此沒有考慮元素相同的時候
return left和right均可以spa
本題裏面有重複元素,因此得考慮left和right的值相同的時候
索引
當中間節點和右邊界點的值相同的時候,沒法判斷最小值在中間節點的左側仍是右側,也就沒法判斷改變左邊界值仍是右邊界值,所以不能隨便忽略某一段元素,咱們只能肯定不管右邊界點的值是否是最小值,數組中都有一個和他相同的中間節點值,所以就能夠忽略右邊界點的值,而後對右邊界點往左側移動一個索引,也就是right--,若是仍是和中間節點值同樣就繼續right--,重複直到右邊界點right節點的值和中間節點的值不相同
資源
return left和right均可以
可是上面這樣right--至關於把相同的元素所有遍歷了一遍,若是重複元素不少,那就須要遍歷不少遍,耗資源it
找到兩個相等以後就直接在裏面遍歷,不出循環了class