Leetcode 319. Bulb Switcher

There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every second bulb. On the third round, you toggle every third bulb (turning on if it's off or turning off if it's on). For the ith round, you toggle every i bulb. For the nth round, you only toggle the last bulb. Find how many bulbs are on after n rounds.

Example:

Given n = 3.

At first, the three bulbs are [off, off, off].
After first round, the three bulbs are [on, on, on].
After second round, the three bulbs are [on, off, on].
After third round, the three bulbs are [on, off, off]. 
So you should return 1, because there is only one bulb is on.

第一個想法:

int bulbSwitch(int n) {
    // 0 1 2 3 4 5
    // 1 3 5 7 9
    // 2 5 8 11 14
    
    
    vector<int> bulbs(n,0);
    for(int i = 1;i <= n;i++){
        for(int j = i - 1;j < n;j += i){
            bulbs[j] ++;
        }
    }
    
    int count = 0;
    for(int i = 0;i < n;i++){
        if(bulbs[i] & 1){
            count ++;
        }
    }
    return count;
}

但是這個對于test case:9999999 會超時。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容