『ACM-算法-二分法』在单调递增序列a中查找小于等于x的数中最大的一个(即x或x的前驱)
生活随笔
收集整理的這篇文章主要介紹了
『ACM-算法-二分法』在单调递增序列a中查找小于等于x的数中最大的一个(即x或x的前驱)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫在前面:我們主要還是分享算法的模板,而不是去刨析算法的原理!
定義: 二分答案是指在答案具有單調性的前提下,利用二分的思想枚舉答案,將求解問題轉化為驗證結果。
流程:
首先需要估計答案的上下界,然后不斷取區間中點進行驗證(這就要求答案的驗證應當簡單可行),并通過驗證結果不斷更新答案區間,最終得到答案。不難看出,樸素的枚舉驗證時間復雜度是O(n)的,而二分可以做到O(logn)
特征:
1.答案具有單調性
2.二分答案的問題往往有固定的問法,比如:令最大值最小(最小值最大),求滿足條件的最大(小)值等。
總結
以上是生活随笔為你收集整理的『ACM-算法-二分法』在单调递增序列a中查找小于等于x的数中最大的一个(即x或x的前驱)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜索引擎大变天?微软新版Bing将全面接
- 下一篇: 『ACM-算法-动态规划』初识DP动态规