LeetCode 第 16 场双周赛(402/822,前48.9%)
文章目錄
- 1. 比賽結(jié)果
- 2. 題目
- LeetCode 1299. 將每個元素替換為右側(cè)最大元素 easy
- LeetCode 1300. 轉(zhuǎn)變數(shù)組后最接近目標值的數(shù)組和 medium
- LeetCode 1302. 層數(shù)最深葉子節(jié)點的和 medium
- LeetCode 1301. 最大得分的路徑數(shù)目 hard
1. 比賽結(jié)果
做出了2道題,第二道題耽擱時間有點長,放棄了,第四題在時間到了后一會就做出來了。
2. 題目
LeetCode 1299. 將每個元素替換為右側(cè)最大元素 easy
給你一個數(shù)組 arr ,請你將每個元素用它右邊最大的元素替換,如果是最后一個元素,用 -1 替換。
完成所有替換操作后,請你返回這個數(shù)組。
示例: 輸入:arr = [17,18,5,4,6,1]
輸出:[18,6,6,6,1,-1]
提示:
1 <= arr.length
<= 10^4 1 <= arr[i] <= 10^5
解題:
從后往前遍歷,記錄當前的最大值。
LeetCode 1300. 轉(zhuǎn)變數(shù)組后最接近目標值的數(shù)組和 medium
LeetCode 1302. 層數(shù)最深葉子節(jié)點的和 medium
給你一棵二叉樹,請你返回層數(shù)最深的葉子節(jié)點的和。
輸入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
輸出:15
提示:
樹中節(jié)點數(shù)目在 1 到 10^4 之間。 每個節(jié)點的值在 1 到 100 之間。
解題:按層遍歷即可
class Solution { public:int deepestLeavesSum(TreeNode* root) {queue<TreeNode*> q;int sum, n;q.push(root);while(!q.empty()){n = q.size();sum = 0;while(n--){sum += q.front()->val;if(q.front()->left)q.push(q.front()->left);if(q.front()->right)q.push(q.front()->right);q.pop();}}return sum;} };LeetCode 1301. 最大得分的路徑數(shù)目 hard
給你一個正方形字符數(shù)組 board ,你從數(shù)組最右下方的字符 ‘S’ 出發(fā)。
你的目標是到達數(shù)組最左上角的字符 ‘E’ ,數(shù)組剩余的部分為數(shù)字字符 1, 2, …, 9 或者障礙 ‘X’。在每一步移動中,你可以向上、向左或者左上方移動,可以移動的前提是到達的格子沒有障礙。
一條路徑的 「得分」 定義為:路徑上所有數(shù)字的和。
請你返回一個列表,包含兩個整數(shù):第一個整數(shù)是 「得分」 的最大值,第二個整數(shù)是得到最大得分的方案數(shù),請把結(jié)果對 10^9 + 7 取余。
如果沒有任何路徑可以到達終點,請返回 [0, 0] 。
示例 1: 輸入:board = ["E23","2X2","12S"] 輸出:[7,1]示例 2: 輸入:board = ["E12","1X1","21S"] 輸出:[4,2]示例 3: 輸入:board = ["E11","XXX","11S"] 輸出:[0,0]提示: 2 <= board.length == board[i].length <= 100解題:
dp二維數(shù)組存儲一個pair(得分,方案數(shù))
總結(jié)
以上是生活随笔為你收集整理的LeetCode 第 16 场双周赛(402/822,前48.9%)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 3. 无重复字符的最长
- 下一篇: LeetCode 5. 最长回文子串(动