T69. Sqrt(x)【Easy】
題目
寫方法 int sqrt(int x)
計算并返回 x 的平方根
思路
哇這是數(shù)學啊!為難死我了!忘記了數(shù)學!
① 找到一個平方> x 的 r ,然后 把 r 減小湊出正確的解
② 若是簡單的 -1 然后得到正確的值會超時
③ 所以要找到一個快速而又不會減的太快的方法
怎么找呢?咳,數(shù)學公式來說話(我竟然還記得一點數(shù)學):
所以用下面的公式就很棒!
r = (r + x/r) / 2;
代碼
代碼取自 Top Solution,稍作注釋
public int mySqrt(int x) {
// 要用long,因為后面要r*r會超過int
long r = x;
// 數(shù)學推導,慢慢減少
while (r*r > x)
r = (r + x/r) / 2;
return (int) r;
}