給定無序陣列arr, 已知arr中任意連個相鄰的數都不相等。 寫乙個函式,只需返回arr中任意乙個區域性最小出現的位置
本題利用二分查詢
1 如果arr為空後者長度為0,返回-1
2 如果arr長度為1或者arr[0]3 如果arr[n-1] < arr[n-2] 返回n-1
4 如果長度大於2 且 arr的左右兩頭都不是區域性最小,則令 left=1, right =n-2, 然後進行二分查詢
給定思路 mid=(left+right)/2
如果 arr[mid] > arr[mid-1] 那麼在 left......mid-1上肯定存在區域性最小 所以令 right=mid-1
如果 arr[mid] < arr[mid+1] 那麼在 mid+1......right上肯定存在區域性最小 所以令 left=mid+1
上面兩個都不滿足,arr[mid] 就是區域性最小 返回mid
一直查詢 知道left == right時停止 返回left就ok
由此可見!!!!!! 二分查詢並不是陣列有序才能使用!!!!
toov5 閱讀(
...)
編輯收藏
在陣列中找到乙個區域性最小的位置
題目 定義區域性最小的概念。1 arr長度為1時,arr 0 是區域性最小。2 arr的長度為n n 1 時,如果arr 0 arr 1 那麼arr 0 是區域性最小 如果arr n 1 arr n 2 那麼arr n 1 是區域性最小 如果0 i n 1,既有arr i arr i 1 又有arr...
在陣列中找到乙個區域性最小的位置
定義區域性最小的概念。arr長度為1時,arr 0 是區域性最小。arr的長度為n n 1 時,如果arr 0 給定無序陣列arr,已知arr中任何兩個相鄰的數不相等。寫乙個函式,只需返回arr中任何乙個區域性最小出現的位置即可。思路 當arr 0 arr 1 arr n 1 arr n 2 時,箭...
python 在陣列中找到乙個區域性最小的位置
題目如下 利用二分查詢可以讓複雜度降到o logn 空間複雜度o 1 解答如下 python 如下 def getlessindex arr ifnot arr return 1 le len arr if le 1 or arr 1 arr 0 return 0if arr le 1 arr le...