😄😊😆😃😄😊😆😃
开始cpp刷题之旅。
依旧是追求耗时0s的一天。
示例 1:
输入:x = 4
输出:2
示例 2:
输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。
思路:这种题目一看就是二分法,很简单的题目,耗时0s,看代码。
class Solution {
public:
int mySqrt(int x) {
if (x == 1 || x == 0) {
return x;
}
int left = 0;
long right = x / 2 + 1;
while (right - left > 1) {
long middle = (left + right) / 2;
if (middle* middle == x) {
return middle;
}else if (middle * middle < x) {
left = middle;
}
else {
right = middle;
}
}
return left;
}
};
调试的时候发现0和1最好还是单独拉出来判断一下,这两个值返回的是自身,其它的数代码都可以满足。
看一下提交记录:
OK,perfect。