二分搜

心得

二分搜算是學習演算法的路上會碰到最基本的幾個演算法之一,而且在往後的比賽之中也會時常見到需要使用二分搜的場合,雖然二分搜的概念並不困難,但在實作上會碰到各式各樣的問題,需要隨著需求不同更改程式碼,有著許多小細節要注意,所以我在此編寫了一個通用模板,可以以相似的想法面對不同類型的題目。

二分搜概念

二分搜能運用到的場合相當多,只要是單調區間便可使用二分查找,主要的題目類型有:

  • 尋找特定值
  • 查找第一個大於等於某數的元素
  • 查找最後一個小於等於某數的元素

二分搜說難也難、說簡單也簡單,主要是實作過程中有許多細節需要注意:

  • left ,right要初始為(0,n-1)還是(0,n)?
  • while判斷式中要填left<=right還是left<right?
  • 更新left和right時mid要+1還是-1?

就這些細節可知二分搜有許多類型和細節,為求解題方便以下將提出一套思路使你在面對各類型的題目時,都能輕易找出對應的寫法。

二分搜 心得 二分搜算是學習演算法的路上會碰到最基本的幾個演算法之一,而且在往後的比賽之中也會時常見到需要使用二分搜的場合,雖然二分搜的概念並不困難,但在實作上會碰到各式各樣的問題,需要隨著需求不同更改程式碼,有著許多小細節要注意,所以我在此編寫了一個通用模板,可以以相似的想法面對不同類型的題目。 二分搜概念 二分搜能運用到的場合相當多,只要是 單調區間 便可使用二分查找,主要的題目類型有: 尋找特定值 查找第一個大於等於某數的元素 查找最後一個小於等於某數的元素 … 二分搜說難也難、說簡單也簡單,主要是實作過程中有 許多細節 需要注意: left ,right要初始為(0,n-1)還是(0,n)? while判斷式中要填left<=right還是left<right? 更新left和right時mid要+1還是-1? 就這些細節可知二分搜有許多類型和細節,為求解題方便以下將提出一套思路使你在面對各類型的題目時,都能輕易找出對應的寫法。