王廷瑋|數位醫療|智慧醫療: 69. Sqrt(x) WFU

2024年7月4日 星期四

69. Sqrt(x)

69. Sqrt(x)


給定一個非負整數 x,返回 x 的平方根並向下取整到最接近的整數。返回的整數也應該是非負的。

你不能使用任何內置的指數函數或運算符。

例如,在 C++ 中不要使用 pow(x, 0.5) 或在 Python 中不要使用 x ** 0.5。

範例 1:

輸入:x = 4 輸出:2 解釋:4 的平方根是 2,所以我們返回 2。


Python


class Solution:
def mySqrt(self, x: int) -> int:
if x < 2:
return x
left, right = 1, x // 2
while left <= right:
mid = (left + right) // 2
if mid * mid == x:
return mid
elif mid * mid < x:
left = mid + 1
else:
right = mid - 1
return right

16.41MB, 43ms


C++


class Solution {
public:
int mySqrt(int x) {
if (x < 2) {
return x;
}

int left = 1, right = x / 2, result = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (mid <= x / mid) {
result = mid; // Update result to the current mid
left = mid + 1;
} else {
right = mid - 1;
}
}

return result;
}
};

7.42MB, 2ms


Javascript


/**
* @param {number} x
* @return {number}
*/
var mySqrt = function(x) {
if (x < 2) {
return x;
}

let left = 1, right = Math.floor(x / 2);
let result = 0;

while (left <= right) {
let mid = Math.floor((left + right) / 2);
if (mid * mid <= x) {
result = mid; // Update result to the current mid
left = mid + 1;
} else {
right = mid - 1;
}
}

return result;
};

51.68MB, 69ms