算法筆記重點(11)二分

學會二分應當掌握三種模板,即尋找相等的值,尋找第一個大於等於的值以及尋找第一個大於的值,大於等於的值與大於的值可組成一個左閉右開的存在性區間,找到多個相同的值。另外,初值的選取需要看返回的值範圍。

浮點數二分也很重要,這裏需要設置精度,當right-left<eps即可退出,返回mid。

此外還有二分答案,即側重應用,比如裝水問題和木棒切割問題。

快速冪非常實用,我們利用遞歸的思想,根據當b爲奇數時,ab=a*ab-1,當b爲偶數時ab=ab/2*ab/2,遞歸邊界爲a0=1。當然也可以用迭代的思想,這種思想個人覺得不太直觀,利用a的二進制位來累計乘積,效率和遞歸差別不大。另外注意遞歸時不要寫成binaryPow()×binaryPow()的形式,這樣會導致算法直接退化成O(n)級。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章