常規:樸素的二分查詢(在一維陣列中查詢乙個數,有返回索引,無則返回-1)
int
binary_search
(int arr,
int n,
int val)
else
if(arr[mid]
>val)
else
}return-1
;}
變體1:可以總結為00001111問題,查詢滿足條件的第乙個1
int
binary_search
(int arr,
int n)
else
}return head/tail;
}
leetcode 題目:35. 搜尋插入位置
變體2:可以總結為11110000問題,查詢滿足條件的最後乙個1
```cpp
intbinary_search
(int arr,
int n)
else
}return head/tail;
}
leetcode題目:
69. x 的平方根](
二分查詢模版
用於一般的二分查詢 public static intbinsearch2 int arr,int target if arr mid target else return 1 1 為啥是 lo mid 1,hi mid 1 而不是 lo mid,hi mid 呢?看迴圈條件 while lo hi...
二分查詢模版 必背
注意點 跳出時都有lo 1 hi統一返回lo 1或hi lo 1 and hi nums.size 和 lo 0 and hi nums.size 1取中時一致 為什麼返回 lo 1 而不是 hi 退出迴圈時有 lo 1 hi 模板開始時將 lo,hi 看做是乙個開區間,通過不斷二分,最終這個區間中...
二分查詢 整數 模版
一段區間,定義一種性質使得區間被一分為二 二分查詢即為尋找滿足性質或不滿足性質的區間的邊界 區間被劃分為 l,mid 和 mid 1,r intbsearch 1 int l,int r 區間被劃分為 l,mid 1 和 mid,r intbsearch 2 int l,int r return l...