69. Sqrt(x)010(二分法求解+详解注释)
生活随笔
收集整理的這篇文章主要介紹了
69. Sqrt(x)010(二分法求解+详解注释)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一:題目
‘給你一個非負整數(shù) x ,計算并返回 x 的 算術(shù)平方根 。
由于返回類型是整數(shù),結(jié)果只保留 整數(shù)部分 ,小數(shù)部分將被 舍去 。
注意:不允許使用任何內(nèi)置指數(shù)函數(shù)和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
示例 1:
輸入:x = 4
輸出:2
示例 2:
輸入:x = 8
輸出:2
解釋:8 的算術(shù)平方根是 2.82842…, 由于返回類型是整數(shù),小數(shù)部分將被舍去。
二:上碼
class Solution { public:int mySqrt(int a) {if(a == 0)return 0;int l = 1,r = a,mid,sqrt;while(l <= r){mid = l + (r - l)/2; //等價 (r+l)/2 sqrt = a/mid;//這里的意思是 x < a/x,我們本來是要求 x平方 < a,這里做了一下變形 if(sqrt == mid){return mid; } else if(mid > sqrt){r = mid - 1;} else{l = mid + 1;} } //這里返回的r是當我們輸入的a不是完全平方數(shù)時候要返回的值,比如8 開完方后是2,我們求取的//右邊界是最接近的結(jié)果 因為當上方的循環(huán)結(jié)束后,如果未能返回正確的結(jié)果,那么肯定是求取的//結(jié)果大于想要的結(jié)果,這樣的話,那么再求一次其右邊界,就是最接近結(jié)果 return r; } };總結(jié)
以上是生活随笔為你收集整理的69. Sqrt(x)010(二分法求解+详解注释)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二分查找(划分时左右元素个数不相等)解析
- 下一篇: 蒸大蒜的功效与作用、禁忌和食用方法