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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 第 199 场周赛(757/5231,前14.5%)

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

文章目錄

    • 1. 比賽結(jié)果
    • 2. 題目
      • 1. LeetCode 5472. 重新排列字符串 easy
      • 2. LeetCode 5473. 燈泡開關(guān) IV medium
      • 3. LeetCode 5474. 好葉子節(jié)點對的數(shù)量 medium
      • 4. LeetCode 5462. 壓縮字符串 II hard

1. 比賽結(jié)果

第一題失誤,點完提交就跑了,沒想到。。第四題DP有些難,繼續(xù)加油!

全國排名: 757 / 5231,14.5%;全球排名: 0 / 1,00.0%

2. 題目

1. LeetCode 5472. 重新排列字符串 easy

題目鏈接

給你一個字符串 s 和一個 長度相同 的整數(shù)數(shù)組 indices 。

請你重新排列字符串 s ,其中第 i 個字符需要移動到 indices[i] 指示的位置。

返回重新排列后的字符串。

示例 1: 輸入:s = "codeleet", indices = [4,5,6,7,0,2,1,3] 輸出:"leetcode" 解釋:如圖所示,"codeleet" 重新排列后變?yōu)?"leetcode" 。示例 2: 輸入:s = "abc", indices = [0,1,2] 輸出:"abc" 解釋:重新排列后,每個字符都還留在原來的位置上。示例 3: 輸入:s = "aiohn", indices = [3,1,4,2,0] 輸出:"nihao"示例 4: 輸入:s = "aaiougrt", indices = [4,0,2,6,7,3,1,5] 輸出:"arigatou"示例 5: 輸入:s = "art", indices = [1,0,2] 輸出:"rat"提示: s.length == indices.length == n 1 <= n <= 100 s 僅包含小寫英文字母。 0 <= indices[i] < n indices 的所有的值都是唯一的 (也就是說,indices 是整數(shù) 0 到 n - 1 形成的一組排列)。

解題:

class Solution { public:string restoreString(string s, vector<int>& indices) {string ans = s;for(int i = 0; i < indices.size(); ++i)ans[indices[i]] = s[i];return ans;} }; class Solution:def restoreString(self, s: str, indices: List[int]) -> str:ans = list(s)for i in range(len(s)):ans[indices[i]] = s[i]return "".join(ans)

2. LeetCode 5473. 燈泡開關(guān) IV medium

題目鏈接

房間中有 n 個燈泡,編號從 0 到 n-1 ,自左向右排成一行。
最開始的時候,所有的燈泡都是 關(guān) 著的。

請你設(shè)法使得燈泡的開關(guān)狀態(tài)和 target 描述的狀態(tài)一致,其中 target[i] 等于 1 第 i 個燈泡是開著的,等于 0 意味著第 i 個燈是關(guān)著的。

有一個開關(guān)可以用于翻轉(zhuǎn)燈泡的狀態(tài),翻轉(zhuǎn)操作定義如下:

  • 選擇當前配置下的任意一個燈泡(下標為 i )
  • 翻轉(zhuǎn)下標從 i 到 n-1 的每個燈泡
  • 翻轉(zhuǎn)時,如果燈泡的狀態(tài)為 0 就變?yōu)?1,為 1 就變?yōu)?0 。

返回達成 target 描述的狀態(tài)所需的 最少 翻轉(zhuǎn)次數(shù)

示例 1: 輸入:target = "10111" 輸出:3 解釋:初始配置 "00000". 從第 3 個燈泡(下標為 2)開始翻轉(zhuǎn) "00000" -> "00111" 從第 1 個燈泡(下標為 0)開始翻轉(zhuǎn) "00111" -> "11000" 從第 2 個燈泡(下標為 1)開始翻轉(zhuǎn) "11000" -> "10111" 至少需要翻轉(zhuǎn) 3 次才能達成 target 描述的狀態(tài)示例 2: 輸入:target = "101" 輸出:3 解釋:"000" -> "111" -> "100" -> "101".示例 3: 輸入:target = "00000" 輸出:0示例 4: 輸入:target = "001011101" 輸出:5提示: 1 <= target.length <= 10^5 target[i] == '0' 或者 target[i] == '1'

解題:

  • 從左往右找到1,開始數(shù)有多少類(連續(xù)的1或者0)
class Solution { public:int minFlips(string target) {int s = 0, i = 0, n = target.size();char prev = '0';for(i = 0; i < n; ++i){if(prev != target[i])s++;prev = target[i];}return s;} };

3. LeetCode 5474. 好葉子節(jié)點對的數(shù)量 medium

題目鏈接

給你二叉樹的根節(jié)點 root 和一個整數(shù) distance 。

如果二叉樹中兩個 葉 節(jié)點之間的 最短路徑長度 小于或者等于 distance ,那它們就可以構(gòu)成一組 好葉子節(jié)點對

返回樹中 好葉子節(jié)點對的數(shù)量 。

示例 1:

輸入:root = [1,2,3,null,4], distance = 3 輸出:1 解釋:樹的葉節(jié)點是 34 ,它們之間的最短路徑的長度是 3 。 這是唯一的好葉子節(jié)點對。

示例 2:

輸入:root = [1,2,3,4,5,6,7], distance = 3 輸出:2 解釋:好葉子節(jié)點對為 [4,5][6,7] ,最短路徑長度都是 2 。 但是葉子節(jié)點對 [4,6] 不滿足要求,因為它們之間的最短路徑長度為 4 。示例 3: 輸入:root = [7,1,4,6,null,5,3,null,null,null,null,null,2], distance = 3 輸出:1 解釋:唯一的好葉子節(jié)點對是 [2,5] 。示例 4: 輸入:root = [100], distance = 1 輸出:0示例 5: 輸入:root = [1,1,1], distance = 2 輸出:1提示: tree 的節(jié)點數(shù)在 [1, 2^10] 范圍內(nèi)。 每個節(jié)點的值都在 [1, 100] 之間。 1 <= distance <= 10

解題:

  • 返回值dis(distance+1,0)數(shù)組,dis[i]表示 距離為 i 的節(jié)點有多少個
class Solution {int ans = 0; public:int countPairs(TreeNode* root, int distance) {dfs(root, distance);return ans;}vector<int> dfs(TreeNode* root, int distance){if(!root) return {};auto l = dfs(root->left,distance);auto r = dfs(root->right,distance);if(!root->left && !root->right){vector<int> dis(distance+1,0);dis[1] = 1;return dis;}for(int i = 1; i < min(int(l.size()),distance+1); ++i)for(int j = 1; j < min(int(r.size()),distance+1); ++j)if(i+j <= distance)ans += l[i]*r[j];vector<int> dis(distance+1, 0);for(int i = 1; i+1 <= distance; ++i)dis[i+1] += (i < l.size() ? l[i] : 0) + (i < r.size() ? r[i] : 0);return dis;} };

4. LeetCode 5462. 壓縮字符串 II hard

題目鏈接

行程長度編碼 是一種常用的字符串壓縮方法,它將連續(xù)的相同字符(重復 2 次或更多次)替換為字符和表示字符計數(shù)的數(shù)字(行程長度)。
例如,用此方法壓縮字符串 “aabccc” ,將 “aa” 替換為 “a2” ,“ccc” 替換為` “c3” 。
因此壓縮后的字符串變?yōu)?“a2bc3” 。

注意,本問題中,壓縮時沒有在單個字符后附加計數(shù) ‘1’ 。

給你一個字符串 s 和一個整數(shù) k 。你需要從字符串 s 中刪除最多 k 個字符,以使 s 的行程長度編碼長度最小。

請你返回刪除最多 k 個字符后,s 行程長度編碼的最小長度

示例 1: 輸入:s = "aaabcccd", k = 2 輸出:4 解釋:在不刪除任何內(nèi)容的情況下,壓縮后的字符串是 "a3bc3d" ,長度為 6 。 最優(yōu)的方案是刪除 'b''d',這樣一來,壓縮后的字符串為 "a3c3" ,長度是 4 。示例 2: 輸入:s = "aabbaa", k = 2 輸出:2 解釋:如果刪去兩個 'b' 字符,那么壓縮后的字符串是長度為 2"a4" 。示例 3: 輸入:s = "aaaaaaaaaaa", k = 0 輸出:3 解釋:由于 k 等于 0 ,不能刪去任何字符。壓縮后的字符串是 "a11" ,長度為 3 。提示: 1 <= s.length <= 100 0 <= k <= s.length s 僅包含小寫英文字母

解題:

動態(tài)規(guī)劃,難。


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結(jié)

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

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