367. Valid Perfect Square ¶ Time: $O(\log num)$ Space: $O(1)$ C++JavaPython 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17class Solution { public: bool isPerfectSquare(int num) { long l = 1; long r = num; while (l < r) { const long m = (l + r) / 2; if (m >= num / m) r = m; else l = m + 1; } return l * l == num; } }; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16class Solution { public boolean isPerfectSquare(int num) { long l = 1; long r = num; while (l < r) { final long m = (l + r) / 2; if (m >= num / m) r = m; else l = m + 1; } return l * l == num; } } 1 2 3 4 5class Solution: def isPerfectSquare(self, num: int) -> bool: l = bisect.bisect_left(range(num), num, key=lambda m: m * m) return l**2 == num