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

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

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

題目要求

思路:找規(guī)律

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

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

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

可見燈以6盞為周期具有相同變化,所以以下只需要推導(dǎo)第一個(gè)周期里的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)按動(dòng)次數(shù)為數(shù)時(shí),兩組燈狀態(tài)分別相同;
  • 當(dāng)開關(guān)按動(dòng)次數(shù)為數(shù)時(shí),兩組燈狀態(tài)分別不同;
  • 所以根據(jù)其中一組燈的狀態(tài)即可判斷另一組。

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

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

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

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

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

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

但按動(dòng)一次時(shí)僅會(huì)出現(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;
    }
}
  • 時(shí)間復(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;
    }
};
  • 時(shí)間復(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
                }
            },
        }
    }
}
  • 時(shí)間復(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)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

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

    本文主要是給大家介紹 OIDC 的核心概念以及如何通過對(duì) Spring Security 的授權(quán)碼模式進(jìn)行擴(kuò)展來實(shí)現(xiàn) OIDC 的單點(diǎn)登錄。對(duì)Security實(shí)現(xiàn)OIDC單點(diǎn)登錄的詳細(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ā)的操作方法,通過在原項(xiàng)目新增一個(gè)maven模塊,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 使用Maven進(jìn)行多模塊項(xiàng)目管理的操作步驟

    使用Maven進(jìn)行多模塊項(xiàng)目管理的操作步驟

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

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

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

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

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

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

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

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

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

最新評(píng)論

平昌县| 广丰县| 苍山县| 鄂伦春自治旗| 云浮市| 娄烦县| 德州市| 常州市| 全南县| 德州市| 娄烦县| 仁怀市| 麟游县| 乃东县| 当雄县| 喀喇沁旗| 平潭县| 邯郸县| 南部县| 临邑县| 绩溪县| 土默特右旗| 上栗县| 宁河县| 五莲县| 三江| 古浪县| 陇川县| 双峰县| 睢宁县| 万盛区| 武清区| 富川| 永济市| 梅州市| 沿河| 灵山县| 冀州市| 合水县| 阳曲县| 安达市|