ACM總結——二分

二分法,應該是所有算法裏面最簡單的,就是在一個有序數組中找一個數,非常簡單。

但是最近捕捉到了一點細節,還是想用系統化的模型來總結總結。

 

二分法的基本用法:

(1)在一個無重有序數組中找一個確定的數,返回找到的下標

(2)在一個可重複的有序數組中找一個確定的數,返回這個數出現的第一個下標

(3)在一個可重複的有序數組中找一個確定的數,返回這個數出現的最後一個下標

(4)結合(2)(3)可得,在一個可重複的有序數組中找一個確定的數,返回這個數出現的所有下標

 

然而,很多題目的二分法是這麼用的:

力扣周賽 5438. 製作 m 束花所需的最少天數  https://blog.csdn.net/nameofcsdn/article/details/106744529

 

我總結了一下,基本二分法是在一個顯式數組中找到一個確定的數

而很多時候,我們是要求滿足某種條件的最大的數,所以我們搜索的對象是隱式的解空間數組,搜索的目標就是我們的答案

理解了這個差異,二分法的題目應該都能想到二分了。

 

搜索解空間數組的時間複雜度是O(T* logJ),其中T是單點驗證時間,J是解空間的大小。

一般如果我們能在10^6次計算內完成單點驗證,就不會超時。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章