二分查找

劍指offerbash

1、二分查找的時間複雜度logn

2、總結:

一、單調性框架

二、存在兩段性的性質ui

3、二分的流程

一、肯定二分的邊界spa

二、編寫二分的代碼框架設計

三、設計一個check 性質,答案在兩段性質的分界點上code

四、判斷一下區間如何更新模板

五、若是更新方式寫的是 l=mid,r=mid-1,那麼就在算mid的時候加上1class


4、模板

二分查找模板test

版本1 :區間 [l,r] 的更新操做是 r=mid,l=mid+1;計算mid      綠顏色總結

int test( int l , int r){
   while( l < r ){
      int mid = l + r / 2;
      if( check( mid ) ){
         r = mid;
      }else {
         l= mid + 1;
      }
   }
   return l;
}複製代碼

版本2:區間[l,r] 的更新操做是 r = mid-1,l=mid 時,計算mid     紅

int test2(int l ,int r){
   while(l<r){
      int mid = l+r+1/2;
      if (check(mid)){
         l = mid;
      }else {
         r = mid-1;
      }
   }
   return l;
}複製代碼
相關文章
相關標籤/搜索