日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 第 24 场双周赛(326/1898,前17.2%)

發(fā)布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 第 24 场双周赛(326/1898,前17.2%) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1. 比賽結(jié)果
    • 2. 題目
      • 1. LeetCode 5372. 逐步求和得到正數(shù)的最小值 easy
      • 2. LeetCode 5373. 和為 K 的最少斐波那契數(shù)字數(shù)目 medium
      • 3. LeetCode 5374. 長度為 n 的開心字符串中字典序第 k 小的字符串 medium
      • 4. LeetCode 5375. 恢復數(shù)組 hard

1. 比賽結(jié)果

做出來了 1、2、3 題,32分鐘做出來3題,感覺有點蒙過來。第4題實在沒思路,繼續(xù)加油!

全國排名:326 / 1898,17.2%;全球排名:1218 / 7729,15.8%

2. 題目

1. LeetCode 5372. 逐步求和得到正數(shù)的最小值 easy

題目鏈接
給你一個整數(shù)數(shù)組 nums 。你可以選定任意的 正數(shù) startValue 作為初始值。

你需要從左到右遍歷 nums 數(shù)組,并將 startValue 依次累加上 nums 數(shù)組中的值。

請你在確保累加和始終大于等于 1 的前提下,選出一個最小的 正數(shù) 作為 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 需要是正數(shù)。示例 3: 輸入:nums = [1,-2,-3] 輸出:5提示: 1 <= nums.length <= 100 -100 <= nums[i] <= 100

解答:

  • 一直加自己的,不夠就補,取最大的
class Solution { public:int minStartValue(vector<int>& nums) {int val=1, i, sum=0;for(i = 0; i < nums.size(); ++i){sum += nums[i];if(sum >= 1)continue;elseval = max(val, 1-sum);}return val;} };

2. LeetCode 5373. 和為 K 的最少斐波那契數(shù)字數(shù)目 medium

題目鏈接
給你數(shù)字 k ,請你返回和為 k 的斐波那契數(shù)字的最少數(shù)目,其中,每個斐波那契數(shù)字都可以被使用多次。

斐波那契數(shù)字定義為: F1 = 1 F2 = 1 Fn = Fn-1 + Fn-2 , 其中 n > 2 。 數(shù)據(jù)保證對于給定的 k ,一定能找到可行解。 示例 1: 輸入:k = 7 輸出:2 解釋:斐波那契數(shù)字為:11235813,…… 對于 k = 7 ,我們可以得到 2 + 5 = 7 。示例 2: 輸入:k = 10 輸出:2 解釋:對于 k = 10 ,我們可以得到 2 + 8 = 10 。示例 3: 輸入:k = 19 輸出:3 解釋:對于 k = 19 ,我們可以得到 1 + 5 + 13 = 19 。提示: 1 <= k <= 10^9

解題:

  • 先生成斐波那契數(shù)列,插入set
  • 貪心,在set中找小于k的最大數(shù)
class Solution { public:int findMinFibonacciNumbers(int k) {set<int> s;s.insert(1);int a = 1, b =1, fn=1, end = 1000000000;while(fn <= end){fn = a+b;a = b;b = fn;s.insert(fn);}int count = 0;while(k!=0){auto it = s.upper_bound(k);k -= *(--it);count++;}return count;} };

16 ms 8 MB

3. LeetCode 5374. 長度為 n 的開心字符串中字典序第 k 小的字符串 medium

題目鏈接
一個 「開心字符串」定義為:

  • 僅包含小寫字母 [‘a(chǎn)’, ‘b’, ‘c’].
  • 對所有在 1 到 s.length - 1 之間的 i ,滿足 s[i] != s[i + 1] (字符串的下標從 1 開始)。

比方說,字符串 “abc”,“ac”,“b” 和 “abcbabcbcb” 都是開心字符串,但是 “aa”,“baa” 和 “ababbc” 都不是開心字符串。

給你兩個整數(shù) 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搜索即可,且是按字典序排列的
class Solution {char ch[3] = {'a','b','c'};vector<string> ans;string s;int N, K; public:string getHappyString(int n, int k) {N = n;K = k;dfs(s);if(k > ans.size())return "";return ans[k-1];}void dfs(string s){if(ans.size()>=K)return;if(s.size()==N){ans.push_back(s);return;}for(int i = 0; i < 3; ++i){if(s.empty() || s.back()!=ch[i])dfs(s+ch[i]);}} };

20 ms 8 MB

4. LeetCode 5375. 恢復數(shù)組 hard

題目鏈接

某個程序本來應該輸出一個整數(shù)數(shù)組。
但是這個程序忘記輸出空格了以致輸出了一個數(shù)字字符串,
我們所知道的信息只有:數(shù)組中所有整數(shù)都在 [1, k] 之間,且數(shù)組中的數(shù)字都沒有前導 0 。

給你字符串 s 和整數(shù) k 。可能會有多種不同的數(shù)組恢復結(jié)果。

按照上述程序,請你返回所有可能輸出字符串 s 的數(shù)組方案數(shù)。

由于數(shù)組方案數(shù)可能會很大,請你返回它對 10^9 + 7 取余 后的結(jié)果。

示例 1: 輸入:s = "1000", k = 10000 輸出:1 解釋:唯一一種可能的數(shù)組方案是 [1000]示例 2: 輸入:s = "1000", k = 10 輸出:0 解釋:不存在任何數(shù)組方案滿足所有整數(shù)都 >= 1<= 10 同時輸出結(jié)果為 s 。示例 3: 輸入:s = "1317", k = 2000 輸出:8 解釋:可行的數(shù)組方案為 [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 解釋:唯一可能的數(shù)組方案是 [20,20] 。 [2020] 不是可行的數(shù)組方案,原因是 2020 > 30 。 [2,020] 也不是可行的數(shù)組方案,因為 020 含有前導 0 。示例 5: 輸入:s = "1234567890", k = 90 輸出:34提示: 1 <= s.length <= 10^5. s 只包含數(shù)字且不包含前導 0 。 1 <= k <= 10^9.

解題:

  • 知道是DP,做不出來
  • 參考評論區(qū)Zakl 的解答

總結(jié)

以上是生活随笔為你收集整理的LeetCode 第 24 场双周赛(326/1898,前17.2%)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。