class{ publicintmySqrt(int x){ for (int i = 0; i <= x / 2 + 1; i++) { long res = (long) i * i; if (res == x) { return i; } if (res > x) { return i - 1; } } return -1; } }
然后看到网上的思路发现还可以用二分法解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class{ publicintmySqrt(int x){ if (x <= 1) { return x; } int left = 1; int right = x; while (left < right) { int mid = (right - left) / 2 + left; if (x / mid >= mid) { left = mid + 1; } else { right = mid; } } return right - 1; } }
近期评论