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 之内的平方数个数就可以得到结果:
cases passed. Runtime: 0 ms Your runtime
beats 26.04% of javasubmissions.
cases passed. Runtime: 48 ms Your runtime beats 15.20% of pythonsubmissions.
【思路-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.
相关文章推荐
- Windows下的绿色版MySQL配置与启动
- Mysql 基础语法
- 评价手心输入法
- IOS之地图详解
- HandlebarsJS 模板引擎
- DT大数据梦工厂Spark定制班笔记(010)
- Android 判断应用是否在前台
- 事件监听器
- android-eclipse编写aidl的时候报错aidl.exe error while creating directories
- Http请求的
- ajax跨域请求
- ajax跨域请求
- 排序算法(冒泡 插入 快速 归并)java
- javatest
- leetcode 1. Two Sum
- IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新
- UVA 624(记录路径)
- matlab读取写入txt,excel文件
- Wiggle Sort
- Android 切换软键盘 以及关闭