319. Bulb Switcher

来源:互联网 发布:剑侠情缘手游mac版 编辑:程序博客网 时间:2024/06/04 19:40

原题:

即一共有n个灯泡关着,一共对它们操作n次,第i次操作会把第i的整数倍的灯泡改变状态。要求返回最后开着的灯泡。


思考过程 & 解题思路:一开始看灯泡只有两种状态,想到的是位操作(虽然不太熟)。后来想到,所有位置不是平方数的灯泡都会被关掉。比如位置为6的灯泡。6 = 1 * 6 = 2 * 3。i = 1,2,3,6都会使他改变状态,改变四次相当于没变,还是关闭的。而对于9,9 = 1 * 9 = 3 * 3,i = 1,3,9时会对它改变状态,最后是闭合(亮)的。因此算出从1到n有几个平方数就可以了。我还傻傻的从1遍历到n,找有多少个平方数,以为这样就很快了,因为一开始想的是暴力破解。结果超时了。后来直接return (int) Math.sqrt(n);就可以了。


AC代码:

public int bulbSwitch(int n) {        return (int) Math.sqrt(n);    }

原创粉丝点击