最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?C++題解leetcode672燈泡開關(guān)示例

 更新時間:2022年09月29日 14:27:03   作者:AnjaVon  
這篇文章主要為大家介紹了Java?C++題解leetcode672燈泡開關(guān)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

題目要求

思路:找規(guī)律

找到盡可能最精簡的通項表達(dá),今日參考:京城打工人

首先,歸納每個開關(guān)會影響的燈,其中(k=0,1,2,…):

開關(guān)反轉(zhuǎn)燈編號
k
2k
2k+1
3k+1

可見燈以6盞為周期具有相同變化,所以以下只需要推導(dǎo)第一個周期里的6盞燈即可。

觀察前6盞燈:

開關(guān)
1一、三、四
2一、二
3一、三
4一、二、四
5一、三
6一、二

發(fā)現(xiàn)燈2、6和3、5分別受同樣的開關(guān)影響,所以狀態(tài)相同;

觀察前4盞燈,發(fā)現(xiàn)燈1、3與燈2、4存在規(guī)律:

  • 當(dāng)開關(guān)按動次數(shù)為數(shù)時,兩組燈狀態(tài)分別相同
  • 當(dāng)開關(guān)按動次數(shù)為數(shù)時,兩組燈狀態(tài)分別不同;
  • 所以根據(jù)其中一組燈的狀態(tài)即可判斷另一組。

因此,選擇一組+另一組中的一盞,即可涵蓋所有燈的狀態(tài)。

因此選擇觀察前三盞燈即可預(yù)知所有明暗狀態(tài):

前三盞燈在不同按動次數(shù)中的狀態(tài)如下:

發(fā)現(xiàn)在一次按動時會出現(xiàn)四種狀態(tài),兩次按動時出現(xiàn)七種狀態(tài)【缺少011狀態(tài)】,三次及以上按動即可出現(xiàn)所有狀態(tài),共2^3=8種。

此時僅需枚舉一盞燈和兩盞燈時的狀態(tài)即可,后續(xù)都與三盞相同:

  • 一盞燈僅可能有兩種狀態(tài);
  • 兩盞燈可能有四種狀態(tài);

但按動一次時僅會出現(xiàn)三種情況【缺少11狀態(tài)】:

  • 將上述規(guī)律歸納為代碼即可!

Java

class Solution {
    public int flipLights(int n, int presses) {
        if (presses == 0)
            return 1;
        if (n == 1)
            return 2;
        else if (n == 2)
            return presses == 1 ? 3 : 4;
        else
            return presses == 1 ? 4 : presses == 2 ? 7 : 8;
    }
}
  • 時間復(fù)雜度:O(1)O(1)O(1)
  • 空間復(fù)雜度:O(1)O(1)O(1)

C++

class Solution {
public:
    int flipLights(int n, int presses) {
        if (presses == 0)
            return 1;
        if (n == 1)
            return 2;
        else if (n == 2)
            return presses == 1 ? 3 : 4;
        else
            return presses == 1 ? 4 : presses == 2 ? 7 : 8;
    }
};
  • 時間復(fù)雜度:O(1)
  • 空間復(fù)雜度:O(1)

Rust

  • 淺學(xué)一下rust的match~
impl Solution {
    pub fn flip_lights(n: i32, presses: i32) -> i32 {
        if presses == 0 {
            return 1;
        }
        match n {
            1 => 2,
            2 => {
                match presses {
                    1 => 3,
                    _ => 4
                }
            },
            _ => {
                match presses {
                    1 => 4,
                    2 => 7,
                    _ => 8
                }
            },
        }
    }
}
  • 時間復(fù)雜度:O(1)
  • 空間復(fù)雜度:O(1)

總結(jié)

本來以為要DP或者生模擬,結(jié)果是數(shù)學(xué)思維找規(guī)律。

一道代碼無敵簡單,思路究極繞的題目,以至于推導(dǎo)完思路感覺就結(jié)束了【代碼都沒啥區(qū)別……】

以上就是Java C++題解leetcode672燈泡開關(guān)示例的詳細(xì)內(nèi)容,更多關(guān)于Java C++題解燈泡開關(guān)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java使用單向鏈表解決數(shù)據(jù)存儲自定義排序問題

    java使用單向鏈表解決數(shù)據(jù)存儲自定義排序問題

    本文主要介紹了java使用單向鏈表解決數(shù)據(jù)存儲自定義排序問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java設(shè)計模式之java原型模式詳解

    Java設(shè)計模式之java原型模式詳解

    這篇文章主要介紹了Java設(shè)計模式之原型模式詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-09-09
  • 基于Security實現(xiàn)OIDC單點登錄的詳細(xì)流程

    基于Security實現(xiàn)OIDC單點登錄的詳細(xì)流程

    本文主要是給大家介紹 OIDC 的核心概念以及如何通過對 Spring Security 的授權(quán)碼模式進行擴展來實現(xiàn) OIDC 的單點登錄。對Security實現(xiàn)OIDC單點登錄的詳細(xì)過程感興趣的朋友,一起看看吧
    2021-09-09
  • SpringBoot?常用讀取配置文件的三種方法詳解

    SpringBoot?常用讀取配置文件的三種方法詳解

    這篇文章主要介紹了SpringBoot?常用讀取配置文件的3種方法,通過本文學(xué)習(xí)可以解決Spring Boot有哪些常用的讀取配置文件方式,一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如list,map如何配置,帶著這些問題一起通過本文學(xué)習(xí)吧
    2022-09-09
  • SpringBoot?分模塊開發(fā)的操作方法

    SpringBoot?分模塊開發(fā)的操作方法

    這篇文章主要介紹了SpringBoot?分模塊開發(fā)的操作方法,通過在原項目新增一個maven模塊,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 使用Maven進行多模塊項目管理的操作步驟

    使用Maven進行多模塊項目管理的操作步驟

    使用Maven進行多模塊項目管理可以清晰組織大型項目結(jié)構(gòu),便于維護和構(gòu)建,詳細(xì)步驟包括創(chuàng)建父項目,設(shè)置pom.xml,創(chuàng)建子模塊,并配置子模塊的pom.xml,在父項目中管理依賴,通過命令行構(gòu)建項目,確保配置一致性
    2024-10-10
  • jdbc鏈接遠(yuǎn)程數(shù)據(jù)庫進行修改url操作

    jdbc鏈接遠(yuǎn)程數(shù)據(jù)庫進行修改url操作

    這篇文章主要為大家詳細(xì)介紹了jdbc鏈接遠(yuǎn)程數(shù)據(jù)庫進行修改url操作,感興趣的小伙伴們可以參考一下
    2016-06-06
  • MyBatisPlus-QueryWrapper多條件查詢及修改方式

    MyBatisPlus-QueryWrapper多條件查詢及修改方式

    這篇文章主要介紹了MyBatisPlus-QueryWrapper多條件查詢及修改方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 收集的一些常用java正則表達(dá)式

    收集的一些常用java正則表達(dá)式

    收集的一些常用java正則表達(dá)式,需要的朋友可以參考一下
    2013-02-02
  • Spring Boot異常處理問題小結(jié)

    Spring Boot異常處理問題小結(jié)

    在 Spring Boot 中,異常處理是一個重要的部分,可以允許開發(fā)者優(yōu)雅地處理應(yīng)用程序中可能發(fā)生的錯誤和異常,這篇文章主要介紹了Spring Boot異常處理問題小結(jié),需要的朋友可以參考下
    2024-05-05

最新評論

临夏市| 浙江省| 镇赉县| 峨边| 海门市| 云浮市| 中卫市| 新龙县| 临沧市| 文水县| 福海县| 昂仁县| 文登市| 安达市| 溧阳市| 鄯善县| 广州市| 武乡县| 钦州市| 襄垣县| 凤凰县| 阿荣旗| 桂平市| 贺兰县| 汉寿县| 昌江| 沅陵县| 万全县| 临武县| 女性| 柘城县| 和田县| 辽中县| 广昌县| 吉木萨尔县| 瓮安县| 怀柔区| 长春市| 瑞金市| 宁津县| 扶沟县|