每日打卡

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))
  
 
}
上一篇 下一篇

猜你喜欢

热点阅读