在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

有趣的算法題熱熱身:燈泡開關

算法與數據結構 ? 來源:牛牛碼特 ? 作者:牛牛碼特 ? 2022-06-16 09:30 ? 次閱讀
計算機基礎和算法是能否拿到一個好offer的關鍵因素,月底牛牛就忙完手上項目了,到時也會多分享相關內容,今天就先整一道LeetCode上有趣的算法題熱熱身:燈泡開關。 01故事起源

初始時有 n 個燈泡,均處于關閉狀態。

對某個燈泡切換開關意味著:如果燈泡狀態為關閉,那該燈泡就會被開啟;而燈泡狀態為開啟,那該燈泡就會被關閉。

第 1 輪,每個燈泡切換一次開關。即打開所有的燈泡。

第 2 輪,每兩個燈泡切換一次開關。即每兩個燈泡關閉后一個。

第 3 輪,每三個燈泡切換一次開關。即位于第3、6、9···的燈泡切換開關。

第 i 輪,每 i 個燈泡切換一次開關。而第 n 輪,你只切換最后一個燈泡的開關。

找出 n 輪后有多少個亮著的燈泡。

示例 1:

2e2f0c3e-ed13-11ec-ba43-dac502259ad0.png

輸入:n = 6 輸出:2

02問題分析

通過上面的圖例,我們可以很清楚地看到,每一輪都會切換一批燈泡。關鍵是可能切換到之前已經切換過的燈泡,如果我們通過模擬來暴力解決,那么每一輪就要遍歷一次,肯定超時。

那我們換種思路想想,這道題似乎更像一道有數學規律的題,這種類型在面試中也不少見。

不過我們不一定能馬上找到規律,那也不要著急,就按部就班:用0表示off, 1表示on,先列出前10個燈泡的答案,看看其中有什么規律可循。

n=1:1

n=2:1 0

n=3:1 0 0

n=4:1 0 0 1

n=5:1 0 0 1 0

n=6:1 0 0 1 0 0

n=7:1 0 0 1 0 0 0

n=8:1 0 0 1 0 0 0 0

n=9:1 0 0 1 0 0 0 0 1

n=10: 1 0 0 10 0 0 0 1 0

03發現規律

我們仔細看看上面的數據就會發現,最后亮燈的位置都在第1、4、9位上,這些位置恰好都是某個因子的平方,比如4,就是2的平方,不知道大家還記得不,在數學上這種數字就叫做完全平方數

那我們就可以大膽猜測:最后亮燈的位置,都是完全平方數。那么每多一個完全平方數,就多一個亮的燈泡。

當然,這只是一個猜測,我們可以用暴力法寫一個程序,把前100個的情況打印出來,就能看出,是滿足這個規律的。

都已經驗證到100輪了,那么基本就是這個規律了。

所以這道題,其實就是尋找n以內有多少個完全平方數,具體做法是從數字1遍歷到數字n,對每個數字判斷是否是完全平方數,最差也是O(n)可以解決。

04思考緣由

牛牛是個打破砂鍋問到底的人,雖然通過規律,解決了問題,但是不搞清楚為什么,總是心里癢癢的。

我們從上面的規律,可以猜測燈泡亮的數量一定和平方根的特性有關系的。

我們先看看一些非完全平方數:

8的因子: 1 2 4 8;

12的因子:1 2 3 4 6 12;

這些因子一定是偶數個,為什么呢?

因為一個因子,一定是和另一個因子,配合起來,才能得到這個數字。

回到我們的燈泡,比如我們拿n=3的情況來說,第一輪打開了第三輪的燈泡,第三輪就會給它關掉,因為1、3是3的成對因子。

但如果是n=4的情況,1、4雖然也會成對抵消,但是第二輪的操作卻無法抵消,因為2的成對因子是2,不會再重復出現。

從這里我們就可以看出來,每增加一個完全平方數,就會多一個不會被抵消掉的因子出現,所以個數也就增加了1。

05更進一步

一般的算法題,O(n)就是性能的極致,但這是一道數學規律題,那我們就得多想想還有沒有更快的辦法。

要找到有多少個完全平方數,是否一定要遍歷完1-n?

稍微思考下就可以發現并不是,拿9舉個:3是9的完全平方因子,在3以上的數字一定不能構成完全平方因子,因為開平方一定超過最大數字9了。如此一來,我們只用考慮3之前的。

不難發現,3之前的1、2是必然滿足完全平方因子的,因為它們做平方,一定小于3的平方,也就一定在數據范圍內。

基于上面的分析,我們可以看出,燈泡亮的個數,就是n的平方根向下取整個,代碼就一行:

return (int)Math.sqrt(n)

06燈泡復盤其實在面試中,遇到這種數學模型的題,是很容易翻車的。如果只是干想,在面試緊張的環境下,很可能大腦一片空白。 不過,這種題的套路也是有的,基本都可以用先實驗,再猜測,再論證的方式去解決,這個不僅僅是面試套路,也是一種很優秀的做事情的模式。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4632

    瀏覽量

    93454
  • 程序
    +關注

    關注

    117

    文章

    3798

    瀏覽量

    81482

原文標題:LC319:燈泡開關

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    應用MSP430G2553與ADS1120檢測K型熱電偶溫度,輸入為正,怎么讀數為負?

    應用MSP430G2553與ADS1120檢測K型熱電偶溫度,連接如圖示 設定方式:AINp=AIN0,AINn=AIN1,連續模式,PGA=64,內部參考電壓, 現象:不加熱熱電偶第一次讀數0x8050,第二次以后0xC050 加熱熱電偶,讀數從0xC0XX開始增加
    發表于 01-07 06:13

    基站開關電源的管理及維護

    基站開關電源的管理及維護 導讀 本文重點介紹了開關電源的“類型及使用場景、配置原則及算法、日常管理及維護”三部分內容。 第一部分? 類型及使用場景 1.組合式開關電源 2.嵌入式
    的頭像 發表于 12-16 16:28 ?635次閱讀
    基站<b class='flag-5'>開關</b>電源的管理及維護

    一種基于深度學習的二維拉曼光譜算法

    近日,天津大學精密儀器與光電子工程學院的光子芯片實驗室提出了一種基于深度學習的二維拉曼光譜算法,成果以“Rapid and accurate bacteria identification
    的頭像 發表于 11-07 09:08 ?317次閱讀
    一種基于深度學習的二維拉曼光譜<b class='flag-5'>算法</b>

    高校開展RK3588課研究 只能人工標注練算法

    進行研究開發,是一個不錯的選擇。這個過程中如何讓算法更加精準的識別檢測目標成為首要解決的問題。要想讓AI算法更能精確的識別檢測目標,可以利用AI的深度學習能力,讓
    的頭像 發表于 10-23 08:07 ?317次閱讀
    高校開展RK3588課<b class='flag-5'>題</b>研究    只能人工標注練<b class='flag-5'>算法</b>?

    用高端開關驅動燈泡負載

    電子發燒友網站提供《用高端開關驅動燈泡負載.pdf》資料免費下載
    發表于 09-24 09:33 ?0次下載
    用高端<b class='flag-5'>開關</b>驅動<b class='flag-5'>燈泡</b>負載

    飛騰產學合作協同育人項目結

    近日,2022年度教育部產學合作協同育人項目結驗收會暨新一期項目建設啟動會在飛騰信息技術有限公司舉辦,來自全國 24 所高校的 30 名教師參加會議,飛騰公司副總經理張承義在會上致辭。
    的頭像 發表于 09-24 09:28 ?719次閱讀

    短文6:關于功率因素的有趣問答

    2個關于功率因素的有趣問答。
    的頭像 發表于 09-23 12:22 ?249次閱讀

    判斷燈泡亮度的主要依據是什么

    判斷燈泡亮度的主要依據是其發光強度,通常用流明(Lumen)來衡量。 燈泡亮度的判斷標準 燈泡作為家庭和商業照明的重要工具,其亮度直接影響到人們的生活和工作環境。選擇合適的燈泡亮度,可
    的頭像 發表于 08-15 17:05 ?3262次閱讀

    燈泡亮度由電流還是電壓決定

    燈泡的亮度主要由燈泡的實際功率決定,而非單一的電流或電壓。以下是對這一結論的介紹: 一、實際功率的作用 燈泡的亮度取決于其實際功率,即燈泡在工作時單位時間內消耗的電能轉化為光能和內能的
    的頭像 發表于 08-15 17:04 ?5522次閱讀

    維修電源板時串個燈泡有什么用

    在維修電源板時,串接一個燈泡具有多重作用,主要體現在以下幾個方面: 1. 保護電源和電路 防止短路損壞 :當電源板存在短路故障時,串接的燈泡可以起到限流的作用,防止過大的電流通過故障點,從而保護電源
    的頭像 發表于 08-15 16:26 ?2452次閱讀

    思爾芯賽正式發布,邀你共戰EDA精英挑戰賽!

    全新的挑戰。今年的賽,我們更加聚焦于數字集成電路設計的核心領域,直擊當前超大規模設計下硬件仿真的技術難點:設計并優化一種高效的超圖分割算法。該技術可以加速設計驗
    的頭像 發表于 08-03 08:24 ?766次閱讀
    思爾芯賽<b class='flag-5'>題</b>正式發布,邀你共戰EDA精英挑戰賽!

    想搞懂通信協議?先來看一篇SPI熱熱身

    SPI是串行外設接口(SerialPeripheralInterface)的縮寫,它是一種同步串行通信接口,用于微控制器和外圍設備(如傳感器、SD卡、其他微控制器等)之間的通信。SPI接口通常用于短距離通信,因為它不支持長距離傳輸。SPI接口的特點包括:全雙工通信:SPI允許數據同時在兩個方向上傳輸,即主機可以發送數據到從機,同時從機也可以發送數據到主機。高
    的頭像 發表于 05-12 08:10 ?1881次閱讀
    想搞懂通信協議?先來看一篇SPI<b class='flag-5'>熱熱身</b>

    YAS2 1030W LED830W+燈泡200W 78°

    電路燈泡
    jf_45612835
    發布于 :2024年04月09日 13:34:11

    YAS2 900W 燈泡900W 118°

    電路燈泡
    jf_45612835
    發布于 :2024年04月09日 13:14:52

    單品解讀JL-3系列之JL-311A燭臺燈座式電子光控開關

    JL-311A燭臺燈座式電子光控開關,適用于根據環境照明水平自主控制燭臺燈泡
    的頭像 發表于 02-19 16:20 ?535次閱讀
    單品解讀JL-3系列之JL-311A燭臺燈座式電子光控<b class='flag-5'>開關</b>
    主站蜘蛛池模板: 色狠狠色综合久久8狠狠色 色狠狠网 | 韩国三级理论在线看中文字幕 | 日本片巨大的乳456线观看 | xxx色xxx性| 综合色吧 | 一区二区三区免费精品视频 | 久久久黄色大片 | 日韩免费无砖专区2020狼 | 萌白酱白丝护士服喷水铁牛tv | 欧美一级高清片欧美国产欧美 | 久久综合影视 | 黄色二级视频 | 女人张开腿男人猛桶视频 | 国产精品福利午夜h视频 | 亚洲一区中文字幕在线观看 | 久久国产视频一区 | 欧美深夜 | 一级美女片 | 思思99re66在线精品免费观看 | 四虎在线网址 | 国产亚洲精品美女久久久 | 亚洲人成电影在线观看网 | 中文字幕亚洲色图 | 在线看视频你懂的 | 久久久久久夜精品精品免费 | 日本69式xxx视频 | 亚洲第一狼人社区 | 亚洲最新在线观看 | 边摸边吃奶边做视频叫床韩剧 | 久久久久国产一级毛片高清板 | 国产午夜小视频 | 夜夜爽夜夜 | 四虎影院视频在线观看 | 超级狂色而且免费又超好看 | 国产成人亚洲影视在线 | 天天视频色 | 国产香蕉一区二区精品视频 | 天天狠天天天天透在线 | www在线观看| 日本不卡免费高清视频 | 老湿司午夜爽爽影院榴莲视频 |