您的位置:首页 > 其它

leetcode 319. Bulb Switcher-灯泡开关

2016-05-22 17:03 411 查看
原题链接: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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: