JAVA程序设计:灯泡开关(LeetCode:319)
生活随笔
收集整理的這篇文章主要介紹了
JAVA程序设计:灯泡开关(LeetCode:319)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
初始時有?n?個燈泡關閉。 第 1 輪,你打開所有的燈泡。 第 2 輪,每兩個燈泡你關閉一次。 第 3 輪,每三個燈泡切換一次開關(如果關閉則開啟,如果開啟則關閉)。第?i 輪,每?i?個燈泡切換一次開關。 對于第?n?輪,你只切換最后一個燈泡的開關。 找出?n?輪后有多少個亮著的燈泡。
示例:
輸入: 3
輸出: 1?
解釋:?
初始時, 燈泡狀態 [關閉, 關閉, 關閉].
第一輪后, 燈泡狀態 [開啟, 開啟, 開啟].
第二輪后, 燈泡狀態 [開啟, 關閉, 開啟].
第三輪后, 燈泡狀態 [開啟, 關閉, 關閉].?
你應該返回 1,因為只有一個燈泡還亮著。
思路:數論辣雞表示這道題真的難倒我了。。。一直在找因數規律。我們可以很容易發現每個燈泡只跟他所在位置的因數個數有關,對于因數個數為基數的最后一定是開著的。
結論就是:除了完全平方數,其他數的因數都是成對出現的。所以我們找完全平方數的個數即可。。。
class Solution {public int bulbSwitch(int n) {return (int)Math.sqrt(n);} }?
總結
以上是生活随笔為你收集整理的JAVA程序设计:灯泡开关(LeetCode:319)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瀚高数据库安全配置要求
- 下一篇: VR系列——Oculus最佳实践:二、双