二分搜尋模板

2021-10-06 18:39:44 字數 1399 閱讀 6585

正如bfs、dfs有模板,二分搜尋也有模板。

模板一:左閉右開 [l,r)

public

void

bianrysearch

(int l ,

int r)

else

}return l;

//是g(m)成立的最小值

}

模板二:左閉右閉 [l,r]

public

void

bianrysearch

(int l ,

int r)

else

}return l;

//是g(m)成立的最小值

}

對於左閉右開、左閉右閉,只是在細節上有些區別,最後結果是一樣的。

g(x)是乙個函式,g(x)滿足 如果x>=m,g(x)>0為true;否則g(x)>0為false。

核心思想是:不要試圖去找乙個正確答案。試圖去找乙個分割點m,使得x>=m,g(x)>0為true。

對於不同型別的題目,核心工作就是尋找g(x)。

在我自己看來比較難理解的是最後求得的l是滿足g(x)的最小值。我的理解是g(m)不滿足條件,l=m+1,那l就是最可能的滿足g(x)的最小值。即使在沒有值滿足g(x)的情況下,那l 會等於r或者r+1。

278. first bad version

查詢第乙個是壞版本的版本號。這裡g(x) = isbadversion(x).

//是g(m)成立的最小值

}my sqrt需要返回最大的乙個數y,使得y

二分搜尋模板

int binary search int nums,int target else if nums mid target else if nums mid target 直接返回 return 1 搜尋區間是兩端閉區間。int left bound int nums,int target else...

二分搜尋的模板(一)

二分搜尋是演算法搜尋一部分的重要內容。雖然變化多端,但仍有跡可循,有法可依。記錄一下在網上遇到的模板 這個模版的核心是將二分搜尋 binary search 問題轉化成 在給定公升序陣列 沒有相同元素 中,尋找大於等於 target 值的最小索引或小於等於 target 值的最大索引。有幾點需要注意...

Java 二分搜尋 二分查詢

對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...