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
}