灯泡开关
力扣 319. 灯泡开关
题目说明
初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。
第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。
找出并返回 n 轮后有多少个亮着的灯泡。
提示:
0 <= n <= 10^9
示例
示例 1:
1 | 输入:n = 3 |
示例 2:
1 | 输入:n = 0 |
示例 3:
1 | 输入:n = 1 |
笔者理解
此题是一道脑筋急转弯算法问题,在力扣题库中被定义为中等题。
解法
当笔者阅读完此题后,发现此题明白原理后就豁然开朗了,我们可以看到题目n的范围是9次幂级的,所以平常的解决办法通常是不行的,我们可以仔细阅读题目再写几组数字,仔细想一下规律,让我们来看看具体如何实现的吧。
实现
1 | class Solution { |
时间和空间效率还行,可见此解法还比较适合此题。
总结
本题是今天的一题,难度是为中等,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!










