leetcode 69.x的平方根
题目描述
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842…,
由于返回类型是整数,小数部分将被舍去。
解题思路
通过循环的方式寻找接近平方根的整数,为了提升代码执行的效率,循环次数可以设置为 ( x / 2 ) + 1 (x/2)+1 (x/2)+1,当循环的数大于或者等于x的时候,就是要寻找的数;需要注意的是,如是相等直接返回,若是不等,需要返回数字加一。考虑的边界情况,一个数的平方可能太大,可能超出了int的返回,所以定义循环遍历的时候需要定义一个long型的变量。
class Solution {
public:
int mySqrt(int x) {
int res = 0;
for (long i=0; i<=(x/2)+1; i++){
if (i*i == x){
res = i;
break;
}
else if(i*i > x){
res = i-1;
break;
}
}
return res;
}
};
欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步