2019-02-24

LeetCode 319. Bulb Switcher.jpg

LeetCode 319. Bulb Switcher

Description

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 i-th round, you toggle every i bulb. For the n-th round, you only toggle the last bulb. Find how many bulbs are on after n rounds.

Example:

Input: 3
Output: 1 
Explanation: 
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.

描述

初始時有 n 個燈泡關(guān)閉膳凝。 第 1 輪辛辨,你打開所有的燈泡。 第 2 輪彻坛,每兩個燈泡你關(guān)閉一次。 第 3 輪,每三個燈泡切換一次開關(guān)(如果關(guān)閉則開啟亮瓷,如果開啟則關(guān)閉)琴锭。第 i 輪晰甚,每 i 個燈泡切換一次開關(guān)。 對于第 n 輪决帖,你只切換最后一個燈泡的開關(guān)厕九。 找出 n 輪后有多少個亮著的燈泡。

示例:

輸入: 3
輸出: 1 
解釋: 
初始時, 燈泡狀態(tài) [關(guān)閉, 關(guān)閉, 關(guān)閉].
第一輪后, 燈泡狀態(tài) [開啟, 開啟, 開啟].
第二輪后, 燈泡狀態(tài) [開啟, 關(guān)閉, 開啟].
第三輪后, 燈泡狀態(tài) [開啟, 關(guān)閉, 關(guān)閉]. 

你應(yīng)該返回 1地回,因?yàn)橹挥幸粋€燈泡還亮著扁远。

思路

  • 數(shù)學(xué)題,對給定的數(shù)字開平方向下取整即是答案刻像。
  • 暴力求解(會超時)畅买,但是通過暴力解法可以發(fā)現(xiàn)規(guī)律。我們聲明一個長度為 n 的數(shù)組细睡,數(shù)組初始值為 0 谷羞。然后我們按照題目要求對其進(jìn)行改變狀態(tài)的操作,0 表示關(guān)溜徙,1 表示開湃缎。我們通過這個會發(fā)現(xiàn)如果給定的 n 為前三個數(shù)(1~3)會有 1 盞燈亮著,如果給定的 n 為接下來的 5 個數(shù) (4~8)蠢壹,會有 2 盞燈亮著嗓违,接下來的 7 個數(shù)(9~15)會有3 盞燈兩者,我們稱給定的所有可能的 n 中图贸,最后剩下相同的燈亮著的情況的 n 為一組蹂季,于是可以發(fā)現(xiàn)每組 n 的個數(shù)是一個首項(xiàng)為 3 公差為 2 的等差數(shù)列。
  • 于是有了第一個解法:我們不斷的從 n 中減去疏日,3偿洁,5,7 ... (n 小于零就停止)沟优,能減少多少次就有多少盞燈亮著父能。
  • 我們可以發(fā)現(xiàn) 13:1;48:2净神;915:3,1625:4溉委,不難發(fā)現(xiàn)我們對 n 開放取整就可以得到答案鹃唯,關(guān)于嚴(yán)格的數(shù)學(xué)證明請參考 這里
# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-02-23 18:46:36
# @Last Modified by:   何睿
# @Last Modified time: 2019-02-23 19:46:07


class Solution:
    def bulbSwitch(self, n: int) -> int:
        return int(n**0.5)

    def bulbSwitch2(self, n: int) -> int:
        count, i = 0, 3
        # 首項(xiàng)為3瓣喊,公差為 2 的等差數(shù)列
        # n 為這些數(shù)字的和
        while n > 0:
            # 每次從 n 中去掉一項(xiàng)
            n -= i
            i += 2
            # 記錄去掉的次數(shù)
            count += 1
        # 次數(shù)就是剩下的晾著的燈泡個數(shù)
        return count

    def bulbSwitch3(self, n: int) -> int:
        # 最直觀的思路坡慌,用一個數(shù)組表示燈泡的開關(guān)情況,0 表示關(guān)藻三,1 表示開
        # !!! 此方法會超時
        bulbs = [0 for i in range(n)]
        for i in range(n):
            j = i
            # 每輪調(diào)整 i 整數(shù)倍的位置
            while j < n:
                bulbs[j] ^= 1
                j += i + 1
        # 統(tǒng)計(jì)最后剩下的 1 的個數(shù)
        return bulbs.count(1)

源代碼文件在 這里 洪橘。
?本文首發(fā)于 何睿的博客 跪者,歡迎轉(zhuǎn)載,轉(zhuǎn)載需保留 文章來源 熄求,作者信息和本聲明.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渣玲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弟晚,更是在濱河造成了極大的恐慌忘衍,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卿城,死亡現(xiàn)場離奇詭異枚钓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瑟押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門搀捷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人多望,你說我怎么就攤上這事嫩舟。” “怎么了便斥?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵至壤,是天一觀的道長。 經(jīng)常有香客問我枢纠,道長像街,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任晋渺,我火速辦了婚禮镰绎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘木西。我一直安慰自己畴栖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布八千。 她就那樣靜靜地躺著吗讶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恋捆。 梳的紋絲不亂的頭發(fā)上照皆,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機(jī)與錄音沸停,去河邊找鬼膜毁。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瘟滨。 我是一名探鬼主播候醒,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杂瘸!你這毒婦竟也來了倒淫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胧沫,失蹤者是張志新(化名)和其女友劉穎昌简,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绒怨,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纯赎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了南蹂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犬金。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖六剥,靈堂內(nèi)的尸體忽然破棺而出晚顷,到底是詐尸還是另有隱情,我是刑警寧澤疗疟,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布该默,位于F島的核電站,受9級特大地震影響策彤,放射性物質(zhì)發(fā)生泄漏栓袖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一店诗、第九天 我趴在偏房一處隱蔽的房頂上張望裹刮。 院中可真熱鬧,春花似錦庞瘸、人聲如沸捧弃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽违霞。三九已至,卻和暖如春瞬场,著一層夾襖步出監(jiān)牢的瞬間葛家,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工泌类, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓刃榨,卻偏偏與公主長得像弹砚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枢希,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容

  • YOU You are my sunshine. You are my angel. You are my all...
    木林森_阿木閱讀 106評論 0 1
  • 正確答案:C 燙傷后沖水或濕敷的溫度盡量在20℃(常溫)桌吃,超過40℃達(dá)不到降溫效果,在接近冰點(diǎn)或低于零下會加重燙傷...
    傳播急救的大臉貓閱讀 41評論 0 0
  • 五律/傍晚荷塘 作者:心博苞轿、圖片:網(wǎng)絡(luò) 池中荷艷艷茅诱,岸上柳依依。 碧水臨昏色搬卒,青山染日暉瑟俭。 村童吹笛返,鄉(xiāng)老荷鋤歸...
    心博1閱讀 215評論 0 0
  • 文章開頭應(yīng)該是契邀,“我小時候家里很窮”這樣的文字摆寄,事實(shí)也確實(shí)如此。 我小時候家里很窮坯门,直到現(xiàn)在也不富裕微饥。我是名副其實(shí)...
    芥末搭配大米飯閱讀 281評論 3 1
  • 有人說,讀書是一種個人活動古戴,非常孤獨(dú)欠橘,是一個人在與歷史對話、與古人對話现恼、與作者對話肃续、與自己對話的一個過程。現(xiàn)在社會...
    塵飛揚(yáng)兮閱讀 497評論 5 12