2021-11-15 319. 灯泡开关
2021-11-15 本文已影响0人
16孙一凡通工
模拟思路解这道题,存在着复杂度高的缺陷,因此在测试用例n=99999时,垮掉了,题解上也说明即使O(n)最终执行用时也是1400ms,很大,因此看到官方题解采用了数学的思路。
java版本
class Solution {
boolean[] arr;
public int bulbSwitch(int n) {
if(n==0 || n==1){
return n;
}
int tmp;
arr=new boolean[n];
for(int i=2;i<=n;i++){
tmp=i;
changeBulk(arr,tmp);
}
int count=0;
for(int i=0;i<arr.length;i++){
// System.out.println(arr[i]);
if(arr[i]==false){
count++;
}
}
return count;
}
public void changeBulk(boolean[] arr,int tmp){
int count=0;
for(int i=0;i<arr.length;i++){
count++;
if(count==tmp){
arr[i]=!arr[i];
count=0;
}
}
}
}
Go版本:
func bulbSwitch(n int) int {
return int(math.Sqrt(float64(n)+0.5))
}