LeetCode-69. x 的平方根
- 1、题目描述
- 2、解题思路
- 3、代码实现
- 4、解题记录
)
1、题目描述
题目描述:
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
示例1:
输入:x = 4
输出:2
示例2:
输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。
示例3:
输入:x=2147395600
输出:46340
2、解题思路
解题思路:
给定一个数求其平方根,通过while
循环,判断条件为n*n
是否小于等于x
,条件成立则n
自增,不成立则j结束循环返回n-1
.。
3、代码实现
class Solution {
public int mySqrt(int x) {
long n=0;
long key=n*n;
while(key <= x){
n++;
key=n*n;
}
return (int)n-1;
}
}
在上面的代码中,最初使用int来定义key和n,但由于当n*n的结果大于int的范围后会产生溢出导致结果错误,所以改为long。
代码运行结果如下所示:
4、解题记录
该题目最初的解题思路就是通过while循环找出合适的n。但在实现过程中,使用的int的表示范围有限导致溢出产生错误。后来改为long后成功解决该问题。