LeetCode319. 灯泡开关

版权声明: https://blog.csdn.net/weixin_40550726/article/details/83063149

初始时有 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 个灯泡切换一次开关。 对于第 轮,你只切换最后一个灯泡的开关。 找出 轮后有多少个亮着的灯泡。

示例:

输入: 3
输出: 1 
解释: 
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 

你应该返回 1,因为只有一个灯泡还亮着。

思路:首先想到的就是数组来模拟每个灯泡的状态,0代表关闭,1代表开启。.模拟n轮后遍历数组寻找开启的灯泡个数。

class Solution {
    public int bulbSwitch(int n) {
          int[] a=new int[n];
        for(int i=1;i<=n;i++){
            trunOf(a,i);
        }
        int count=0;
        for(int i=0;i<a.length;i++){
            if(a[i]!=0){
                count++;
            }
        }
        return count;
    }
     public  void trunOf(int a[],int k){
        for(int i=k-1;i<a.length;i+=k){
            if(a[i]==0){
                a[i]=1;
            }else{
                a[i]=0;
            }
        }
    }
}

但是提交代码会超出时间限制。于是猜想这其中是不是有什么规律,将1到200内的灯泡数全部进行n轮开关后,开启的灯泡个数打印出来,结果如下

灯泡数:1       n轮后开启的灯泡数: 1
灯泡数:2       n轮后开启的灯泡数: 1
灯泡数:3       n轮后开启的灯泡数: 1
灯泡数:4       n轮后开启的灯泡数: 2
灯泡数:5       n轮后开启的灯泡数: 2
灯泡数:6       n轮后开启的灯泡数: 2
灯泡数:7       n轮后开启的灯泡数: 2
灯泡数:8       n轮后开启的灯泡数: 2
灯泡数:9       n轮后开启的灯泡数: 3
灯泡数:10       n轮后开启的灯泡数: 3
灯泡数:11       n轮后开启的灯泡数: 3
灯泡数:12       n轮后开启的灯泡数: 3
灯泡数:13       n轮后开启的灯泡数: 3
灯泡数:14       n轮后开启的灯泡数: 3
灯泡数:15       n轮后开启的灯泡数: 3
灯泡数:16       n轮后开启的灯泡数: 4
灯泡数:17       n轮后开启的灯泡数: 4
灯泡数:18       n轮后开启的灯泡数: 4
灯泡数:19       n轮后开启的灯泡数: 4
灯泡数:20       n轮后开启的灯泡数: 4
灯泡数:21       n轮后开启的灯泡数: 4
灯泡数:22       n轮后开启的灯泡数: 4
灯泡数:23       n轮后开启的灯泡数: 4
灯泡数:24       n轮后开启的灯泡数: 4
灯泡数:25       n轮后开启的灯泡数: 5
灯泡数:26       n轮后开启的灯泡数: 5
灯泡数:27       n轮后开启的灯泡数: 5
灯泡数:28       n轮后开启的灯泡数: 5
灯泡数:29       n轮后开启的灯泡数: 5
灯泡数:30       n轮后开启的灯泡数: 5
灯泡数:31       n轮后开启的灯泡数: 5
灯泡数:32       n轮后开启的灯泡数: 5
灯泡数:33       n轮后开启的灯泡数: 5
灯泡数:34       n轮后开启的灯泡数: 5
灯泡数:35       n轮后开启的灯泡数: 5
灯泡数:36       n轮后开启的灯泡数: 6
灯泡数:37       n轮后开启的灯泡数: 6
灯泡数:38       n轮后开启的灯泡数: 6
灯泡数:39       n轮后开启的灯泡数: 6
灯泡数:40       n轮后开启的灯泡数: 6
灯泡数:41       n轮后开启的灯泡数: 6
灯泡数:42       n轮后开启的灯泡数: 6
灯泡数:43       n轮后开启的灯泡数: 6
灯泡数:44       n轮后开启的灯泡数: 6
灯泡数:45       n轮后开启的灯泡数: 6
灯泡数:46       n轮后开启的灯泡数: 6
灯泡数:47       n轮后开启的灯泡数: 6
灯泡数:48       n轮后开启的灯泡数: 6
灯泡数:49       n轮后开启的灯泡数: 7
灯泡数:50       n轮后开启的灯泡数: 7
灯泡数:51       n轮后开启的灯泡数: 7
灯泡数:52       n轮后开启的灯泡数: 7
灯泡数:53       n轮后开启的灯泡数: 7
灯泡数:54       n轮后开启的灯泡数: 7
灯泡数:55       n轮后开启的灯泡数: 7
灯泡数:56       n轮后开启的灯泡数: 7
灯泡数:57       n轮后开启的灯泡数: 7
灯泡数:58       n轮后开启的灯泡数: 7
灯泡数:59       n轮后开启的灯泡数: 7
灯泡数:60       n轮后开启的灯泡数: 7
灯泡数:61       n轮后开启的灯泡数: 7
灯泡数:62       n轮后开启的灯泡数: 7
灯泡数:63       n轮后开启的灯泡数: 7
灯泡数:64       n轮后开启的灯泡数: 8
灯泡数:65       n轮后开启的灯泡数: 8
灯泡数:66       n轮后开启的灯泡数: 8
灯泡数:67       n轮后开启的灯泡数: 8
灯泡数:68       n轮后开启的灯泡数: 8
灯泡数:69       n轮后开启的灯泡数: 8
灯泡数:70       n轮后开启的灯泡数: 8
灯泡数:71       n轮后开启的灯泡数: 8
灯泡数:72       n轮后开启的灯泡数: 8
灯泡数:73       n轮后开启的灯泡数: 8
灯泡数:74       n轮后开启的灯泡数: 8
灯泡数:75       n轮后开启的灯泡数: 8
灯泡数:76       n轮后开启的灯泡数: 8
灯泡数:77       n轮后开启的灯泡数: 8
灯泡数:78       n轮后开启的灯泡数: 8
灯泡数:79       n轮后开启的灯泡数: 8
灯泡数:80       n轮后开启的灯泡数: 8
灯泡数:81       n轮后开启的灯泡数: 9
灯泡数:82       n轮后开启的灯泡数: 9
灯泡数:83       n轮后开启的灯泡数: 9
灯泡数:84       n轮后开启的灯泡数: 9
灯泡数:85       n轮后开启的灯泡数: 9
灯泡数:86       n轮后开启的灯泡数: 9
灯泡数:87       n轮后开启的灯泡数: 9
灯泡数:88       n轮后开启的灯泡数: 9
灯泡数:89       n轮后开启的灯泡数: 9
灯泡数:90       n轮后开启的灯泡数: 9
灯泡数:91       n轮后开启的灯泡数: 9
灯泡数:92       n轮后开启的灯泡数: 9
灯泡数:93       n轮后开启的灯泡数: 9
灯泡数:94       n轮后开启的灯泡数: 9
灯泡数:95       n轮后开启的灯泡数: 9
灯泡数:96       n轮后开启的灯泡数: 9
灯泡数:97       n轮后开启的灯泡数: 9
灯泡数:98       n轮后开启的灯泡数: 9
灯泡数:99       n轮后开启的灯泡数: 9
灯泡数:100       n轮后开启的灯泡数: 10
灯泡数:101       n轮后开启的灯泡数: 10
灯泡数:102       n轮后开启的灯泡数: 10
灯泡数:103       n轮后开启的灯泡数: 10
灯泡数:104       n轮后开启的灯泡数: 10
灯泡数:105       n轮后开启的灯泡数: 10
灯泡数:106       n轮后开启的灯泡数: 10
灯泡数:107       n轮后开启的灯泡数: 10
灯泡数:108       n轮后开启的灯泡数: 10
灯泡数:109       n轮后开启的灯泡数: 10
灯泡数:110       n轮后开启的灯泡数: 10
灯泡数:111       n轮后开启的灯泡数: 10
灯泡数:112       n轮后开启的灯泡数: 10
灯泡数:113       n轮后开启的灯泡数: 10
灯泡数:114       n轮后开启的灯泡数: 10
灯泡数:115       n轮后开启的灯泡数: 10
灯泡数:116       n轮后开启的灯泡数: 10
灯泡数:117       n轮后开启的灯泡数: 10
灯泡数:118       n轮后开启的灯泡数: 10
灯泡数:119       n轮后开启的灯泡数: 10
灯泡数:120       n轮后开启的灯泡数: 10
灯泡数:121       n轮后开启的灯泡数: 11
灯泡数:122       n轮后开启的灯泡数: 11
灯泡数:123       n轮后开启的灯泡数: 11
灯泡数:124       n轮后开启的灯泡数: 11
灯泡数:125       n轮后开启的灯泡数: 11
灯泡数:126       n轮后开启的灯泡数: 11
灯泡数:127       n轮后开启的灯泡数: 11
灯泡数:128       n轮后开启的灯泡数: 11
灯泡数:129       n轮后开启的灯泡数: 11
灯泡数:130       n轮后开启的灯泡数: 11
灯泡数:131       n轮后开启的灯泡数: 11
灯泡数:132       n轮后开启的灯泡数: 11
灯泡数:133       n轮后开启的灯泡数: 11
灯泡数:134       n轮后开启的灯泡数: 11
灯泡数:135       n轮后开启的灯泡数: 11
灯泡数:136       n轮后开启的灯泡数: 11
灯泡数:137       n轮后开启的灯泡数: 11
灯泡数:138       n轮后开启的灯泡数: 11
灯泡数:139       n轮后开启的灯泡数: 11
灯泡数:140       n轮后开启的灯泡数: 11
灯泡数:141       n轮后开启的灯泡数: 11
灯泡数:142       n轮后开启的灯泡数: 11
灯泡数:143       n轮后开启的灯泡数: 11
灯泡数:144       n轮后开启的灯泡数: 12
灯泡数:145       n轮后开启的灯泡数: 12
灯泡数:146       n轮后开启的灯泡数: 12
灯泡数:147       n轮后开启的灯泡数: 12
灯泡数:148       n轮后开启的灯泡数: 12
灯泡数:149       n轮后开启的灯泡数: 12
灯泡数:150       n轮后开启的灯泡数: 12
灯泡数:151       n轮后开启的灯泡数: 12
灯泡数:152       n轮后开启的灯泡数: 12
灯泡数:153       n轮后开启的灯泡数: 12
灯泡数:154       n轮后开启的灯泡数: 12
灯泡数:155       n轮后开启的灯泡数: 12
灯泡数:156       n轮后开启的灯泡数: 12
灯泡数:157       n轮后开启的灯泡数: 12
灯泡数:158       n轮后开启的灯泡数: 12
灯泡数:159       n轮后开启的灯泡数: 12
灯泡数:160       n轮后开启的灯泡数: 12
灯泡数:161       n轮后开启的灯泡数: 12
灯泡数:162       n轮后开启的灯泡数: 12
灯泡数:163       n轮后开启的灯泡数: 12
灯泡数:164       n轮后开启的灯泡数: 12
灯泡数:165       n轮后开启的灯泡数: 12
灯泡数:166       n轮后开启的灯泡数: 12
灯泡数:167       n轮后开启的灯泡数: 12
灯泡数:168       n轮后开启的灯泡数: 12
灯泡数:169       n轮后开启的灯泡数: 13
灯泡数:170       n轮后开启的灯泡数: 13
灯泡数:171       n轮后开启的灯泡数: 13
灯泡数:172       n轮后开启的灯泡数: 13
灯泡数:173       n轮后开启的灯泡数: 13
灯泡数:174       n轮后开启的灯泡数: 13
灯泡数:175       n轮后开启的灯泡数: 13
灯泡数:176       n轮后开启的灯泡数: 13
灯泡数:177       n轮后开启的灯泡数: 13
灯泡数:178       n轮后开启的灯泡数: 13
灯泡数:179       n轮后开启的灯泡数: 13
灯泡数:180       n轮后开启的灯泡数: 13
灯泡数:181       n轮后开启的灯泡数: 13
灯泡数:182       n轮后开启的灯泡数: 13
灯泡数:183       n轮后开启的灯泡数: 13
灯泡数:184       n轮后开启的灯泡数: 13
灯泡数:185       n轮后开启的灯泡数: 13
灯泡数:186       n轮后开启的灯泡数: 13
灯泡数:187       n轮后开启的灯泡数: 13
灯泡数:188       n轮后开启的灯泡数: 13
灯泡数:189       n轮后开启的灯泡数: 13
灯泡数:190       n轮后开启的灯泡数: 13
灯泡数:191       n轮后开启的灯泡数: 13
灯泡数:192       n轮后开启的灯泡数: 13
灯泡数:193       n轮后开启的灯泡数: 13
灯泡数:194       n轮后开启的灯泡数: 13
灯泡数:195       n轮后开启的灯泡数: 13
灯泡数:196       n轮后开启的灯泡数: 14
灯泡数:197       n轮后开启的灯泡数: 14
灯泡数:198       n轮后开启的灯泡数: 14
灯泡数:199       n轮后开启的灯泡数: 14
灯泡数:200       n轮后开启的灯泡数: 14

发现第一轮开启灯泡数为1的灯泡个数是1~3,下一轮开启灯泡数为2的灯泡个数是4~8,以后灯泡数每增加上一轮的灯泡数+2,开启的灯泡数+1;即count(灯泡总数),first(上一轮的灯泡数),res(开启的灯泡数),

count+=first; 

first+=2;

res++;

代码实现 

class Solution {
    public int bulbSwitch(int n) {
        if(n<=0){
            return 0;
        }
         if(n<=3){
            return 1;
        }
        if(n<=8){
            return 2;
        }
        int first=7;
        int count=8;
        int res=2;
        while (count<n){
            count+=first;
            first+=2;
            res++;
        }
        return res;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_40550726/article/details/83063149