实现 int sqrt(int x) 函数,计算并返回 x 的平方根。
样例
样例 1:
输入: 0
输出: 0
样例 2:
输入: 3
输出: 1
样例解释:
返回对x开根号后向下取整的结果。
样例 3:
输入: 4
输出: 2
挑战
O(log(x))
int sqrt(int x) {
// write your code here
int ret = 0;
if (x == 0)
return ret;
if (x == 1)
return 1;
long long count = 1;
long long tmp = 1;
for (long long i = 1; i<33; i++)
{
if (tmp > x)
{
break;
}
count = count * 2;
tmp = count * count;
}
for (long long i = count; i > 1; i--)
{
long long tmp = i* i;
if (tmp > x)
continue;
if (i*i <= x)
{
ret = i;
break;
}
}
return ret;
}
void test()
{
int a = 2147483647;
int ret = sqrt(a);
}