leetcode から取られた古典的な数学のブレーンツェーサー問題文 "最初にすべての電球が点灯しています。すべての2番目の電球をオフにします。3番目のラウンドでは、3番目の電球をトグルします(オンの場合はオン、オフの場合はオフにします)。最後の球。nラウンド後にどのくらいの球根があるか調べる。Pythonの範囲関数ステップサイズリストの割り当て範囲外のエラー、ブレーンジサーをシミュレートする
私は問題自体に簡潔な解決策があることを認識していますが、電球のオン/オフ切り替えの問題をシミュレートしたいと思います。しかし、ステップサイズが増えるにつれて、範囲外のエラーのリストインデックスを実行していますが、どうすればこのエラーを処理できますか?インデックスが有効な場合にのみ、値を切り替える必要があります。
def bulbSwitch(self, n):
"""
:type n: int
:rtype: int
"""
bulbs= [0]*n
step=0
for i in range(n):
step += 1
for s in range(0, n, step):
bulbs[s+i]=0 if bulbs[s]==1 else 1 #this line produces error
print bulbs
をなぜ '電球[s + i]'ですか? – jonrsharpe
@jonrsharpe私は電球[0]から始めるのは嫌いです。ステップサイズが2のときは、電球[1]で始まり、ステップサイズは3、電球[2]などで始まります。 – codeAligned
それを得るが、なぜ現在のラウンドの番号を追加するのですか? – jonrsharpe