国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    4784

    瀏覽量

    98059
  • 程序
    +關注

    關注

    117

    文章

    3846

    瀏覽量

    85240

原文標題:LC319:燈泡開關

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    單片機遙控開關mos管介紹

    實現對燈光的控制。 但如果想用Arduino或者單片機去控制燈泡的話,就需要使用MOS管來替換開關。我們把圖稍微轉換一下,我們可以看到MOS管是有三個端口,即三個引腳,分別為Gate、Drain
    發表于 01-04 07:59

    芯片熱特性的熱阻描述

    熱阻(Thermal Resistance)表示熱量在傳遞過程中所受到的阻力,為傳熱路徑上的溫差與熱量的比值。根據傳熱方式的不同,熱阻又分為導熱熱阻、對流換熱熱阻和輻射換熱熱阻。
    的頭像 發表于 11-27 09:28 ?2034次閱讀
    芯片熱特性的熱阻描述

    【精選直播】openDACS 2025 開源EDA與芯片大賽 賽五 賽七 直播宣講會

    openDACS2025開源EDA與芯片大賽線上宣講賽五:芯片大模型Finetune11月11日(周二)19:30精彩開播|宣講信息報告題目賽宣講:芯片大模型Finetune宣講嘉賓王穎
    的頭像 發表于 11-11 08:08 ?768次閱讀
    【精選直播】openDACS 2025 開源EDA與芯片大賽 賽<b class='flag-5'>題</b>五 賽<b class='flag-5'>題</b>七 直播宣講會

    【精選直播】openDACS 2025 開源EDA與芯片大賽 賽六 賽三 直播宣講會

    openDACS2025開源EDA與芯片大賽線上宣講賽六:從Verilog到網表:電路的PPA優化11月04日(周二)19:30精彩開播|宣講信息報告題目賽宣講:從Verilog到網表:電路
    的頭像 發表于 11-04 08:08 ?701次閱讀
    【精選直播】openDACS 2025 開源EDA與芯片大賽 賽<b class='flag-5'>題</b>六 賽<b class='flag-5'>題</b>三 直播宣講會

    SM4算法實現分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結構,以字為單位進行加密、解密運算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴展都是采用32輪非線性迭代結構
    發表于 10-30 08:10

    【精選直播】openDACS 2025 開源EDA與芯片大賽 賽二 賽四 直播宣講會

    openDACS2025開源EDA與芯片大賽線上宣講賽二:TestBench生成與驗證10月31日(周五)19:30精彩開播|宣講信息報告題目賽宣講:TestBench生成與驗證宣講嘉賓葉靖
    的頭像 發表于 10-28 10:08 ?948次閱讀
    【精選直播】openDACS 2025 開源EDA與芯片大賽 賽<b class='flag-5'>題</b>二 賽<b class='flag-5'>題</b>四 直播宣講會

    國密系列算法簡介及SM4算法原理介紹

    一、 國密系列算法簡介 國家商用密碼算法(簡稱國密/商密算法),是由我國國家密碼管理局制定并公布的密碼算法標準。其分類1所示: 圖1 國家商用密碼
    發表于 10-24 08:25

    加密算法的應用

    加密是一種保護信息安全的重要手段,近年來隨著信息技術的發展,加密技術的應用越來越廣泛。本文將介紹加密算法的發展、含義、分類及應用場景。 1. 加密算法的發展 加密算法的歷史可以追溯到古代。在
    發表于 10-24 08:03

    【賽補充說明】2025全國大學生FPGA創新設計競賽紫光同創杯賽

    【賽發布】2025年全國大學生FPGA創新設計競賽紫光同創杯賽邀您鴻圖展翼共赴芯程!【賽知多少】紫光同創賽答疑專場|2025年全國大學生嵌入式芯片與系統設計競賽FPGA賽道【板卡借用申請開放
    的頭像 發表于 09-12 16:03 ?2079次閱讀
    【賽<b class='flag-5'>題</b>補充說明】2025全國大學生FPGA創新設計競賽紫光同創杯賽

    【賽教程】基于RK3568+PG2L50H實現八路視頻輸入參考方案

    【賽發布】2025年全國大學生FPGA創新設計競賽紫光同創杯賽邀您鴻圖展翼共赴芯程!重磅!全國FPGA大賽紫光同創杯提交作品即送FPGA開發板!【賽知多少】紫光同創賽答疑專場|2025年全國
    的頭像 發表于 09-12 16:03 ?1452次閱讀
    【賽<b class='flag-5'>題</b>教程】基于RK3568+PG2L50H實現八路視頻輸入參考方案

    PPEC電源DIY套件:圖形化算法編程,解鎖電力電子底層算法實踐

    電源。這種方式不僅降低了開發門檻,還保留了對底層算法的控制能力,具有很強的實踐性和教育意義。 升級版開關電源DIY 套件核心組件含: PPEC 最小系統板(PPEC32F334RBT7 芯片
    發表于 08-14 11:30

    【賽知多少】 紫光同創賽答疑專場|2025年全國大學生嵌入式芯片與系統設計競賽FPGA賽道

    紫光同創賽道答疑專場來啦!2025年全國大學生嵌入式芯片與系統設計競賽報名已拉開帷幕,FPGA賽道的挑戰與創新并存。近期,我們收到許多關于賽的咨詢,小眼睛科技團隊第一時間整理了大家的疑問,并帶來
    的頭像 發表于 08-06 11:02 ?3587次閱讀
    【賽<b class='flag-5'>題</b>知多少】 紫光同創賽<b class='flag-5'>題</b>答疑專場|2025年全國大學生嵌入式芯片與系統設計競賽FPGA賽道

    DFT算法與FFT算法的優劣分析

    一概述 在諧波分析儀中,我們常常提到的兩個詞語,就是DFT算法與FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT算法,用戶往往關注的是能否達到所要分析諧波次數的目的,
    的頭像 發表于 08-04 09:30 ?1407次閱讀

    從細微處把關!小燈泡氣密性檢測儀對照明行業的重要性

    在照明行業,小燈泡結構雖簡,但生產工藝細節關乎性能與壽命。氣密性檢測是關鍵工序,影響燈泡穩定性、安全性及壽命。本文將從技術原理、行業意義、實際應用三方面,下述是探討小燈泡氣密性檢測儀對行業的重要性
    的頭像 發表于 06-20 14:03 ?497次閱讀
    從細微處把關!小<b class='flag-5'>燈泡</b>氣密性檢測儀對照明行業的重要性

    SVPWM的原理及法則推導和控制算法詳解

    SVPWM 是近年發展的一種比較新穎的控制方法,是由三相功率逆變器的六個功率開關元件組成的特定開關模式產生的脈寬調制波,能夠使輸出電流波形盡 可能接近于理想的正弦波形。空間電壓矢量 PWM 與傳統
    發表于 03-14 14:51