LeetCode 第 24 场双周赛(326/1898,前17.2%)
文章目錄
- 1. 比賽結果
- 2. 題目
- 1. LeetCode 5372. 逐步求和得到正數的最小值 easy
- 2. LeetCode 5373. 和為 K 的最少斐波那契數字數目 medium
- 3. LeetCode 5374. 長度為 n 的開心字符串中字典序第 k 小的字符串 medium
- 4. LeetCode 5375. 恢復數組 hard
1. 比賽結果
做出來了 1、2、3 題,32分鐘做出來3題,感覺有點蒙過來。第4題實在沒思路,繼續加油!
全國排名:326 / 1898,17.2%;全球排名:1218 / 7729,15.8%
2. 題目
1. LeetCode 5372. 逐步求和得到正數的最小值 easy
題目鏈接
給你一個整數數組 nums 。你可以選定任意的 正數 startValue 作為初始值。
你需要從左到右遍歷 nums 數組,并將 startValue 依次累加上 nums 數組中的值。
請你在確保累加和始終大于等于 1 的前提下,選出一個最小的 正數 作為 startValue 。
示例 1: 輸入:nums = [-3,2,-3,4,2] 輸出:5 解釋:如果你選擇 startValue = 4,在第三次累加時,和小于 1 。累加求和startValue = 4 | startValue = 5 | nums(4 -3 ) = 1 | (5 -3 ) = 2 | -3(1 +2 ) = 3 | (2 +2 ) = 4 | 2(3 -3 ) = 0 | (4 -3 ) = 1 | -3(0 +4 ) = 4 | (1 +4 ) = 5 | 4(4 +2 ) = 6 | (5 +2 ) = 7 | 2示例 2: 輸入:nums = [1,2] 輸出:1 解釋:最小的 startValue 需要是正數。示例 3: 輸入:nums = [1,-2,-3] 輸出:5提示: 1 <= nums.length <= 100 -100 <= nums[i] <= 100解答:
- 一直加自己的,不夠就補,取最大的
2. LeetCode 5373. 和為 K 的最少斐波那契數字數目 medium
題目鏈接
給你數字 k ,請你返回和為 k 的斐波那契數字的最少數目,其中,每個斐波那契數字都可以被使用多次。
解題:
- 先生成斐波那契數列,插入set
- 貪心,在set中找小于k的最大數
16 ms 8 MB
3. LeetCode 5374. 長度為 n 的開心字符串中字典序第 k 小的字符串 medium
題目鏈接
一個 「開心字符串」定義為:
- 僅包含小寫字母 [‘a’, ‘b’, ‘c’].
- 對所有在 1 到 s.length - 1 之間的 i ,滿足 s[i] != s[i + 1] (字符串的下標從 1 開始)。
比方說,字符串 “abc”,“ac”,“b” 和 “abcbabcbcb” 都是開心字符串,但是 “aa”,“baa” 和 “ababbc” 都不是開心字符串。
給你兩個整數 n 和 k ,你需要將長度為 n 的所有開心字符串按字典序排序。
請你返回排序后的第 k 個開心字符串,如果長度為 n 的開心字符串少于 k 個,那么請你返回 空字符串 。
示例 1: 輸入:n = 1, k = 3 輸出:"c" 解釋:列表 ["a", "b", "c"] 包含了所有長度為 1 的開心字符串。 按照字典序排序后第三個字符串為 "c" 。示例 2: 輸入:n = 1, k = 4 輸出:"" 解釋:長度為 1 的開心字符串只有 3 個。示例 3: 輸入:n = 3, k = 9 輸出:"cab" 解釋:長度為 3 的開心字符串總共有 12 個 ["aba", "abc", "aca", "acb", "bab", "bac", "bca", "bcb", "cab", "cac", "cba", "cbc"] 。 第 9 個字符串為 "cab"示例 4: 輸入:n = 2, k = 7 輸出:""示例 5: 輸入:n = 10, k = 100 輸出:"abacbabacb"提示: 1 <= n <= 10 1 <= k <= 100解題:
- dfs搜索即可,且是按字典序排列的
20 ms 8 MB
4. LeetCode 5375. 恢復數組 hard
題目鏈接
某個程序本來應該輸出一個整數數組。
但是這個程序忘記輸出空格了以致輸出了一個數字字符串,
我們所知道的信息只有:數組中所有整數都在 [1, k] 之間,且數組中的數字都沒有前導 0 。
給你字符串 s 和整數 k 。可能會有多種不同的數組恢復結果。
按照上述程序,請你返回所有可能輸出字符串 s 的數組方案數。
由于數組方案數可能會很大,請你返回它對 10^9 + 7 取余 后的結果。
示例 1: 輸入:s = "1000", k = 10000 輸出:1 解釋:唯一一種可能的數組方案是 [1000]示例 2: 輸入:s = "1000", k = 10 輸出:0 解釋:不存在任何數組方案滿足所有整數都 >= 1 且 <= 10 同時輸出結果為 s 。示例 3: 輸入:s = "1317", k = 2000 輸出:8 解釋:可行的數組方案為 [1317],[131,7],[13,17],[1,317], [13,1,7],[1,31,7],[1,3,17],[1,3,1,7]示例 4: 輸入:s = "2020", k = 30 輸出:1 解釋:唯一可能的數組方案是 [20,20] 。 [2020] 不是可行的數組方案,原因是 2020 > 30 。 [2,020] 也不是可行的數組方案,因為 020 含有前導 0 。示例 5: 輸入:s = "1234567890", k = 90 輸出:34提示: 1 <= s.length <= 10^5. s 只包含數字且不包含前導 0 。 1 <= k <= 10^9.解題:
- 知道是DP,做不出來
- 參考評論區Zakl 的解答
總結
以上是生活随笔為你收集整理的LeetCode 第 24 场双周赛(326/1898,前17.2%)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1120. 子树的最大
- 下一篇: LeetCode 1291. 顺次数(模