LeetCode69.x的平方根.🌟🌟🌟🌟🌟简单
问题描述
原题链接:69. x 的平方根
给你一个非负整数 x ,计算并返回 x 的算术平方根。
由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
示例 1:
输入:x = 4
输出:2
示例 2:
输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
限制:
0 <= x <= 231 - 1
代码
Java
public int mySqrt(int x) {
int l = 0;
int r = x;
while(l <= r){
if(r - l <= 1){
return r * r > x ? l : r;
}
int mid = l + ( r - l) /2;
if((long)mid*mid > x){
r = mid - 1;
} else if((long)mid*mid == x){
return mid;
} else {
l = mid;
}
}
return -1;
}
Python
class Solution:
def mySqrt(self, x: int) -> int:
l = 0
r = x
while l <= r:
if r - l <= 1:
return l if r * r > x else r
mid = l + (r - l) // 2
if mid * mid > x:
r = mid - 1
elif mid * mid == x:
return mid
else:
l = mid
return -1
C++
class Solution {
public:
int mySqrt(int x) {
int l = 0;
int r = x;
while (l <= r) {
if (r - l <= 1) {
return r * r > x ? l : r;
}
int mid = l + (r - l) / 2;
if ((long long)mid * mid > x) {
r = mid - 1;
} else if ((long long)mid * mid == x) {
return mid;
} else {
l = mid;
}
}
return -1;
}
};
Go
func mySqrt(x int) int {
l := 0
r := x
for l <= r {
if r-l <= 1 {
if r*r > x {
return l
} else {
return r
}
}
mid := l + (r-l)/2
if mid*mid > x {
r = mid - 1
} else if mid*mid == x {
return mid
} else {
l = mid
}
}
return -1
}
评论(11)
class Solution:
def mySqrt(self, x: int) -> int:
l = 0
h = x
while l <= h:
if h – l <= 1:
return l
mid = l + (h – l)//2
if midmid > x:
h = mid
elif mid*mid < x:
l = mid
else:
return mid
return -1
打卡
DAY 2
2/3
https://flowus.cn/share/e47ad9b3-8389-414f-8163-7881ce0e7661
【FlowUs 息流】69. x 的平方根
打卡
打卡
class Solution {
public int mySqrt(int x) {
int l = 1;
int r = x;
int candidate = 0;
while(l <= r){
int mid = l + (r – l) / 2;
if((long) mid * mid > x){
r = mid – 1;
}else if((long) mid * mid < x){
candidate = mid;
l = mid + 1;
}else{
return mid;
}
}
return candidate;
}
}class Solution {
public int mySqrt(int x) {
int l = 1;
int r = x;
int candidate = 0;
while(l <= r){
int mid = l + (r – l) / 2;
if((long) mid * mid > x){
r = mid – 1;
}else if((long) mid * mid < x){
candidate = mid;
l = mid + 1;
}else{
return mid;
}
}
return candidate;
}
}
打卡
您好,这个不能用sqrt()直接开根取整数 这种解法吗?
不可以哦,你这样的话,就失去了做这道题的意义了哈,而且题目要求也限制你不能使用库函数哦