1 题目描述
2 解题思路
这道题如果真的开了一个数组一个一个模拟,那么时间肯定超了
我们看一下规律吧:
灯的编号 | 开关会受到第几轮的影响(一开始都是关闭的 | 受影响的变换次数的奇偶 |
1 | 1 | 奇数 |
2 | 1,2 | 偶数 |
3 | 1,3 | 偶数 |
4 | 1,2,4 | 奇数 |
5 | 1,5 | 偶数 |
6 | 1,2,3,6 | 偶数 |
8 | 1,2,4,8 | 偶数 |
9 | 1,3,9 | 奇数 |
12 | 1,2,3,4,6,12 | 偶数 |
16 | 1,2,4,8,16 | 奇数 |
灯的开与关会受到灯编号的因数对应的轮数的影响。
所以要想要灯是开着的,那么就需要灯的编号是完全平方数(受到的影响的变换次数为奇数)
所以就看n以内有几个完全平方数就可以了
class Solution:
def bulbSwitch(self, n: int) -> int:
return(int(math.sqrt(n)))