intmySqrt(int n){ int lo = 0, hi = n; while (lo < hi) { long m = (lo + hi + 1) / 2; long p = m * m; if (p <= n) { lo = m; } else { hi = m - 1; } } return lo; } };
O(sqrt(n)) time O(1) space
1 2 3 4 5 6 7 8 9 10
classSolution { public: intbulbSwitch(int n){ int res = 0; for (int i = 1; i * i <= n; ++i) { ++res; } return res; } };