初始时有n个灯泡处于关闭状态。

对某个灯泡切换开关意味着:如果灯泡状态为关闭,那该灯泡就会被开启;而灯泡状态为开启,那该灯泡就会被关闭。

第 1 轮,每个灯泡切换一次开关。即,打开所有的灯泡。

第 2 轮,每两个灯泡切换一次开关。 即,每两个灯泡关闭一个。

第 3 轮,每三个灯泡切换一次开关。

i轮,每i个灯泡切换一次开关。 而第n轮,你只切换最后一个灯泡的开关。

找出n轮后有多少个亮着的灯泡。

示例 1:

file

输入:n = 3
输出:1
解释:
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭].

你应该返回 1,因为只有一个灯泡还亮着。

示例 2:

输入:n = 0
输出:0

示例 3:

输入:n = 1
输出:1

提示:

  • 0 <= n <= 10^9

1.暴力超时
Python解答:

class Solution:
    def bulbSwitch(self, n: int) -> int:
        flag = [False for i in range(n)]
        for i in range(n):
            for j in range(i, n, i+1):
                flag[j] = not flag[j]
        total = 0
        for i in range(n):
            if flag[i]:
                total += 1
        return total

2.求完全平方数
Python解答:

class Solution:
    def bulbSwitch(self, n: int) -> int:
        i = 1
        total = 0
        while i*i <= n:
            total += 1
            i += 1
        return total
最后修改日期: 2021年9月14日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。