LeetCode 第 199 场周赛(757/5231,前14.5%)
文章目錄
- 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)
3. LeetCode 5474. 好葉子節(jié)點對的數(shù)量 medium
題目鏈接
給你二叉樹的根節(jié)點 root 和一個整數(shù) distance 。
如果二叉樹中兩個 葉 節(jié)點之間的 最短路徑長度 小于或者等于 distance ,那它們就可以構(gòu)成一組 好葉子節(jié)點對 。
返回樹中 好葉子節(jié)點對的數(shù)量 。
示例 1:
示例 2:
解題:
- 返回值dis(distance+1,0)數(shù)組,dis[i]表示 距離為 i 的節(jié)點有多少個
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云 超级码力在线编程大赛初赛 第4场
- 下一篇: LeetCode 1689. 十-二进制