更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。
组队打卡,更多解法等你一起来参与哦!
LeetCode 69. x 的平方根 ,难度简单。
暴力
解题思路:直接遍历平方 i
, 判断 x
是否满足 i 2 ≤ x < ( i + 1 ) 2 i^2 \leq x < (i + 1)^2 i2≤x<(i+1)2 。主要是注意溢出。
class Solution {public int mySqrt(int x) {if (x == 0) return 0;for (int i = 1; i <= x; ++i) {if ((long)i * i <= x && x < (long)(i + 1) * (i + 1)) {return i;}}return 0;}
}
二分法
解题思路:直接看代码吧,思路也很清晰,主要是注意溢出。
class Solution {public int mySqrt(int x) {if (x == 0) {return 0;}int left = 1, right = x;while (left <= right) {int mid = left + (right - left) / 2;long square = (long) mid * mid; // 防止溢出if (square == x) {return mid;} else if (square < x) {left = mid + 1;} else {right = mid - 1;}}return right;}
}