题目来源:
leetcode题目,网址:69. x 的平方根 - 力扣(LeetCode)
解题思路:
从0开始遍历非负整数,直至该数的平方小于等于x,该数的下一个数的平方大于x。
解题代码:
//java
class Solution {
public int mySqrt(int x) {
int res=0;
for(int i=0;i<=x;i++){
if(i*i<=x && (double)(i+1)*(i+1)>x ){
res=i;
break;
}
}
return res;
}
}
#python3
class Solution:
def mySqrt(self, x: int) -> int:
for i in range(x+1):
if i*i<=x and (i+1)*(i+1)>x:
return i
return -1
总结:
因为x的数据类型是int,所以在判断i*i<=x时不会出现问题,但在判断(i+1)*(i+1)>x时,(i+1)*(i+1)可能会出现溢出从导致该判断与实际情况不符,因此需要进行强制类型转换。
官方题解里面是用二分查找的方法寻找平方根的,效率更高。