国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode 38 外觀數(shù)列

這篇具有很好參考價值的文章主要介紹了LeetCode 38 外觀數(shù)列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

題目描述

外觀數(shù)列

給定一個正整數(shù) n ,輸出外觀數(shù)列的第 n 項。

「外觀數(shù)列」是一個整數(shù)序列,從數(shù)字 1 開始,序列中的每一項都是對前一項的描述。

你可以將其視作是由遞歸公式定義的數(shù)字字符串序列:

  • countAndSay(1) = "1"
  • countAndSay(n) 是對 countAndSay(n-1) 的描述,然后轉(zhuǎn)換成另一個數(shù)字字符串。

前五項如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221
第一項是數(shù)字 1 
描述前一項,這個數(shù)是 1 即 “ 一 個 1 ”,記作 "11"
描述前一項,這個數(shù)是 11 即 “ 二 個 1 ” ,記作 "21"
描述前一項,這個數(shù)是 21 即 “ 一 個 2 + 一 個 1 ” ,記作 "1211"
描述前一項,這個數(shù)是 1211 即 “ 一 個 1 + 一 個 2 + 二 個 1 ” ,記作 "111221"

描述 一個數(shù)字字符串,首先要將字符串分割為 最小 數(shù)量的組,每個組都由連續(xù)的最多 相同字符 組成。然后對于每個組,先描述字符的數(shù)量,然后描述字符,形成一個描述組。要將描述轉(zhuǎn)換為數(shù)字字符串,先將每組中的字符數(shù)量用數(shù)字替換,再將所有描述組連接起來。

例如,數(shù)字字符串 "3322251" 的描述如下圖:

LeetCode 38 外觀數(shù)列,leetcode,leetcode,算法,數(shù)據(jù)結(jié)構(gòu)

示例 1:

輸入:n = 1
輸出:"1"
解釋:這是一個基本樣例。

示例 2:

輸入:n = 4
輸出:"1211"
解釋:
countAndSay(1) = "1"
countAndSay(2) = 讀 "1" = 一 個 1 = "11"
countAndSay(3) = 讀 "11" = 二 個 1 = "21"
countAndSay(4) = 讀 "21" = 一 個 2 + 一 個 1 = "12" + "11" = "1211"

提示:

  • 1 <= n <= 30

解法

依次統(tǒng)計字符串中連續(xù)相同字符的個數(shù)。

左到右依次掃描字符串 Sn?1中連續(xù)相同的字符的最大數(shù)目,然后將字符的統(tǒng)計數(shù)目轉(zhuǎn)化為數(shù)字字符串再連接上對應(yīng)的字符即可。

java代碼:

class Solution {
    public String countAndSay(int n) {
        String res = "1";
        if (n == 1) {
            return res;
        }

        for (int i = 1; i < n; i++) {
            int count = 0;
            StringBuilder newRes = new StringBuilder();
            for (int j = 0; j < res.length(); j++) {
                if (count == 0 || res.charAt(j) == res.charAt(j - 1)) {
                    count ++;
                } else {
                    newRes.append(count).append(res.charAt(j - 1));
                    count = 1;
                }
            }
            if (count != 0) {
                newRes.append(count).append(res.charAt(res.length() - 1));
            }
            res = newRes.toString();
        }
        return res;
    }
}

復(fù)雜度文章來源地址http://www.zghlxwxcb.cn/news/detail-786661.html

  • 時間復(fù)雜度:O(N×M),其中 N 為給定的正整數(shù),M 為生成的字符串中的最大長度。
  • 空間復(fù)雜度:O(M)。

到了這里,關(guān)于LeetCode 38 外觀數(shù)列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【算法與數(shù)據(jù)結(jié)構(gòu)】62、LeetCode不同路徑

    【算法與數(shù)據(jù)結(jié)構(gòu)】62、LeetCode不同路徑

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :機(jī)器人只能向下或者向右移動,那么到達(dá)(i,j)位置的路徑和(i-1,j)以及(i,j-1)有關(guān)。那么我們就得到的動態(tài)規(guī)劃的表達(dá)式 d p [ i ] [ j ] = d p [ i ? 1 ] [ j ] + d p [ i ] [ j ? 1 ] dp[i][

    2024年01月18日
    瀏覽(24)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】343、LeetCode整數(shù)拆分

    【算法與數(shù)據(jù)結(jié)構(gòu)】343、LeetCode整數(shù)拆分

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :博主做這道題的時候一直在思考,如何找到 k k k 個正整數(shù), k k k 究竟為多少合適。從數(shù)學(xué)的邏輯上來說,將 n n n 均分為 k k k 個數(shù)之后, k k k 個數(shù)的乘積為最大(類似于相同周長

    2024年01月17日
    瀏覽(23)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】494、LeetCode目標(biāo)和

    【算法與數(shù)據(jù)結(jié)構(gòu)】494、LeetCode目標(biāo)和

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題和這道題【算法與數(shù)據(jù)結(jié)構(gòu)】1049、LeetCode 最后一塊石頭的重量 II類似,同樣可以轉(zhuǎn)換成01背包問題。下面開始論述。假設(shè)添加正號的整數(shù)子集和為 p o s i t i v e positive p os i t

    2024年01月20日
    瀏覽(23)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】474、LeetCode一和零

    【算法與數(shù)據(jù)結(jié)構(gòu)】474、LeetCode一和零

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題要找strs數(shù)組的最大子集,這個子集最多含有 m m m 個0和 n n n 個1。本題也可以抽象成一個01背包的問題。其中,strs內(nèi)的元素就是物品,而 m m m 和 n n n 就是背包的維度。 d p [

    2024年01月22日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)

    數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)

    給定一個三角形 triangle ,找出自頂向下的最小路徑和。 每一步只能移動到下一行中相鄰的結(jié)點(diǎn)上。相鄰的結(jié)點(diǎn) 在這里指的是 下標(biāo) 與 上一層結(jié)點(diǎn)下標(biāo) 相同或者等于 上一層結(jié)點(diǎn)下標(biāo) + 1 的兩個結(jié)點(diǎn)。也就是說,如果正位于當(dāng)前行的下標(biāo) i ,那么下一步可以移動到下一行的下標(biāo)

    2023年04月24日
    瀏覽(21)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】112、LeetCode路徑總和

    【算法與數(shù)據(jù)結(jié)構(gòu)】112、LeetCode路徑總和

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題通過計算根節(jié)點(diǎn)到葉子節(jié)點(diǎn)路徑上節(jié)點(diǎn)的值之和,然后再對比目標(biāo)值。利用文章【算法和數(shù)據(jù)結(jié)構(gòu)】257、LeetCode二叉樹的所有路徑中的遞歸算法。 這里要注意,默認(rèn)路徑之和是

    2024年02月11日
    瀏覽(29)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】377、LeetCode組合總和 Ⅳ

    【算法與數(shù)據(jù)結(jié)構(gòu)】377、LeetCode組合總和 Ⅳ

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題明面上說是組合,實際上指的是排列。動態(tài)規(guī)劃排列組合背包問題需要考慮遍歷順序。 d p [ i ] dp[i] d p [ i ] 指的是nums數(shù)組中總和為target的元素排列的個數(shù)。 d p [ i ] dp[i] d p [

    2024年01月23日
    瀏覽(26)
  • 【python與數(shù)據(jù)結(jié)構(gòu)】(leetcode算法預(yù)備知識)

    【python與數(shù)據(jù)結(jié)構(gòu)】(leetcode算法預(yù)備知識)

    筆記為自我總結(jié)整理的學(xué)習(xí)筆記,若有錯誤歡迎指出喲~ 1.數(shù)字類型: 整數(shù)(int):表示整數(shù)值,例如 1、-5、100。 浮點(diǎn)數(shù)(float):表示帶有小數(shù)部分的數(shù)字,例如 3.14、-0.5、2.0。 復(fù)數(shù)(complex):表示實部和虛部的復(fù)數(shù),例如 2+3j。 2.布爾類型(bool): 表示真(True)或假(

    2024年02月08日
    瀏覽(23)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】654、LeetCode最大二叉樹

    【算法與數(shù)據(jù)結(jié)構(gòu)】654、LeetCode最大二叉樹

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :【算法與數(shù)據(jù)結(jié)構(gòu)】106、LeetCode從中序與后序遍歷序列構(gòu)造二叉樹這兩道題有些類似,相關(guān)代碼可以互相參考,本題明示了要用遞歸來做,那么遞歸三要素不可缺少: 輸入?yún)?shù)和返

    2024年02月09日
    瀏覽(23)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】518、LeetCode零錢兌換 II

    【算法與數(shù)據(jù)結(jié)構(gòu)】518、LeetCode零錢兌換 II

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :本題的硬幣是無數(shù)的,因此本題可以抽象成一個完全背包問題。完全背包和01背包的不同之處在于完全背包式從前往后遍歷的。在本題的完全背包問題中,amount代表背包的最大重量

    2024年01月23日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包