【Lintcode】141. Sqrt(x)
阿新 • • 發佈:2020-12-27
技術標籤:# 二分、位運算與數學leetcode演算法java
題目地址:
https://www.lintcode.com/problem/sqrtx/description
給定一個非負整數 n n n,返回最大的滿足 x 2 ≤ n x^2\le n x2≤n的 x x x。
直接二分。程式碼如下:
public class Solution {
/**
* @param x: An integer
* @return: The sqrt of x
*/
public int sqrt(int x) {
// write your code here
long l = 0, r = x;
while (l < r) {
long m = l + (r - l + 1 >> 1);
if (m <= x / m) {
l = m;
} else {
r = m - 1;
}
}
return (int) l;
}
}
時間複雜度
O
(
log
n
)
O(\log n)
O(logn),空間
O
(
1
)
O(1)
O(1)。