思路:
第 i 个灯泡最终是否亮,取决于它被切换了多少次。
第 i 个灯泡会在它的每个约数轮次被切换,所以切换次数等于 i 的约数个数。
只有完全平方数的约数个数是奇数,因此最终亮着的灯泡编号都是完全平方数。
所以答案就是 1 ~ n 中完全平方数的个数,即 (int) Math.sqrt(n)。
Java 实现:
classSolution{publicintbulbSwitch(intn){return(int)Math.sqrt(n);}}复杂度:
· 时间复杂度:O(1)
· 空间复杂度:O(1)
例如:
· n = 3,完全平方数只有 1,返回 1
· n = 4,完全平方数有 1, 4,返回 2