LeetCode 第 17 场双周赛(469/897,前52.3%)
文章目錄
- 1. 比賽結(jié)果
- 2. 題目
- LeetCode 5143. 解壓縮編碼列表 easy
- LeetCode 5144. 矩陣區(qū)域和 medium
- LeetCode 5145. 祖父節(jié)點(diǎn)值為偶數(shù)的節(jié)點(diǎn)和 medium
- LeetCode 5146. 不同的循環(huán)子字符串 hard
1. 比賽結(jié)果
做出來了1, 3兩題,第2題在比賽結(jié)束后10分鐘提交通過。
2. 題目
LeetCode 5143. 解壓縮編碼列表 easy
題目鏈接
給你一個(gè)以行程長(zhǎng)度編碼壓縮的整數(shù)列表 nums 。
考慮每相鄰兩個(gè)元素 [a, b] = [nums[2*i], nums[2*i+1]] (其中 i >= 0 ),每一對(duì)都表示解壓后有 a 個(gè)值為 b 的元素。
請(qǐng)你返回解壓后的列表。
示例: 輸入:nums = [1,2,3,4] 輸出:[2,4,4,4]提示: 2 <= nums.length <= 100 nums.length % 2 == 0 1 <= nums[i] <= 100解答:語(yǔ)文題,讀懂題目即可,一開始沒讀懂,出錯(cuò)一次。
class Solution { public:vector<int> decompressRLElist(vector<int>& nums) {vector<int> ans;int count, val;for(int i = 0; i < nums.size()/2; ++i){count = nums[2*i];val = nums[2*i+1];while(count--)ans.push_back(val);}return ans;} };LeetCode 5144. 矩陣區(qū)域和 medium
題目鏈接
給你一個(gè) m * n 的矩陣 mat 和一個(gè)整數(shù) K ,請(qǐng)你返回一個(gè)矩陣 answer ,其中每個(gè) answer[i][j] 是所有滿足下述條件的元素 mat[r][c] 的和:
解題:
- 按行動(dòng)態(tài)規(guī)劃,ans[i][j] = ans[i][j-1]+vs(mat,j+K,i-K,i+K)-vs(mat,j-K-1,i-K,i+K)
- 后面的和 == 左邊的和 + 新增加的列 - 出去的列
LeetCode 5145. 祖父節(jié)點(diǎn)值為偶數(shù)的節(jié)點(diǎn)和 medium
題目鏈接
給你一棵二叉樹,請(qǐng)你返回滿足以下條件的所有節(jié)點(diǎn)的值之和:
- 該節(jié)點(diǎn)的祖父節(jié)點(diǎn)的值為偶數(shù)。(一個(gè)節(jié)點(diǎn)的祖父節(jié)點(diǎn)是指該節(jié)點(diǎn)的父節(jié)點(diǎn)的父節(jié)點(diǎn)。)
如果不存在祖父節(jié)點(diǎn)值為偶數(shù)的節(jié)點(diǎn),那么返回 0 。
示例:
解題:常規(guī)操作,遞歸
class Solution { public:int sumEvenGrandparent(TreeNode* root) {int ans = 0;dfs(ans, root);return ans;}void dfs(int& ans, TreeNode* root){if(!root) return;if(root->val%2 == 0){if(root->left){if(root->left->left)ans += root->left->left->val;if(root->left->right)ans += root->left->right->val;}if(root->right){if(root->right->left)ans += root->right->left->val;if(root->right->right)ans += root->right->right->val;}}dfs(ans, root->left);dfs(ans, root->right);} };LeetCode 5146. 不同的循環(huán)子字符串 hard
題目鏈接
給你一個(gè)字符串 text ,請(qǐng)你返回滿足下述條件的 不同 非空子字符串的數(shù)目:這些子字符串可以寫成某個(gè)字符串與其自身的串聯(lián)。
示例 1: 輸入:text = "abcabcabc" 輸出:3 解釋:3 個(gè)子字符串分別為 "abcabc" , "bcabca" 和 "cabcab" 。示例 2: 輸入:text = "leetcodeleetcode" 輸出:2 解釋:2 個(gè)子字符串為 "ee" 和 "leetcodeleetcode" 。提示: 1 <= text.length <= 2000 text 只包含小寫英文字母。解題:
想著暴力能夠破解,想多了,hard題目,不能暴力解。
超時(shí)代碼:
- 用c++17 的 string_view 可以避免復(fù)制,可以節(jié)省內(nèi)存
總結(jié)
以上是生活随笔為你收集整理的LeetCode 第 17 场双周赛(469/897,前52.3%)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1054. 距离相等的
- 下一篇: 剑指Offer - 面试题32 - II