leetcode 319. Bulb Switcher-灯泡开关

来源:互联网 发布:固态硬盘优化设置 编辑:程序博客网 时间:2024/05/16 09:18
原题链接:319. Bulb Switcher

【思路-Java、Python】

首先解读一下题意,假如有4个灯泡那么过程是这样的:

初始状态灯泡全关,

第一轮,每1个灯泡状态变化一次,得到结果[on,on,on,on];第二轮,每2个灯泡状态变化一次,得到结果[on,off,on,off];第三轮,每3个灯泡状态变化一次,得到结果[on,off,off,off];第四轮,每4个灯泡状态变化一次,得到结果[on,off,off,on]

经过上面的分析,相信你也有了一定的思路。假如灯泡数量为10个,那么对于第4个灯泡,它被改变的状态分别处于第几轮呢?

很显然,4 = 1 * 4(第一轮)、4 = 2 * 2 (第二轮)、4 = 4 * 1(第四轮),经过3三轮状态变化过后,第四盏灯状态将是开启的。我们可以看出一个规律,对于平方数,它的最后状态总是 on 的,因为其他因数都是成对出现的,那么只要求出 n 之内的平方数个数就可以得到结果:

public class Solution {    public int bulbSwitch(int n) {        return (int)Math.sqrt(n)    }}
35 / 35 test cases passed. Runtime: 0 ms  Your runtime beats 26.04% of javasubmissions.

class Solution(object):    def bulbSwitch(self, n):        """        :type n: int        :rtype: int        """        return int(n**0.5)
35 / 35 test cases passed. Runtime: 48 ms  Your runtime beats 15.20% of pythonsubmissions.

1 0
原创粉丝点击