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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 第 16 场双周赛(402/822,前48.9%)

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

文章目錄

    • 1. 比賽結果
    • 2. 題目
      • LeetCode 1299. 將每個元素替換為右側(cè)最大元素 easy
      • LeetCode 1300. 轉(zhuǎn)變數(shù)組后最接近目標值的數(shù)組和 medium
      • LeetCode 1302. 層數(shù)最深葉子節(jié)點的和 medium
      • LeetCode 1301. 最大得分的路徑數(shù)目 hard

1. 比賽結果

做出了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

解題:
從后往前遍歷,記錄當前的最大值。

class Solution { public:vector<int> replaceElements(vector<int>& arr) {int m = arr.back(), origin;arr.back() = -1;for(int i = arr.size()-2; i >= 0; --i){origin = arr[i];//記錄原始數(shù)據(jù)arr[i] = m;//右側(cè)的最大值填入m = max(m, origin);//更新最大值}return arr;} };

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ù),請把結果對 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ù))

class Solution {int n, i, j; public:vector<int> pathsWithMaxScore(vector<string>& board) {n = board.size();board[0][0] = board[n-1][n-1] = '0';//方便后面處理起點和終點的得分vector<vector<pair<int,int>>> dp(n,vector<pair<int,int>> (n, make_pair(0,0)));dp[n-1][n-1].second = 1;//起點的方案數(shù)為1for(i = n-2; i >= 0 && board[i][n-1] != 'X'; --i){ //初始化最后1列dp[i][n-1].first = dp[i+1][n-1].first+board[i][n-1]-'0';//得分累加dp[i][n-1].second = 1;//方案數(shù)只有1種}for(i = n-2; i >= 0 && board[n-1][i] != 'X'; --i){ //初始化最后1行dp[n-1][i].first = dp[n-1][i+1].first+board[n-1][i]-'0';dp[n-1][i].second = 1;}for(i = n-2; i >= 0; i--){for(j = n-2; j >= 0; j--){ //填寫其他dp數(shù)組if(board[i][j] != 'X')//沒有障礙{if(dp[i+1][j+1].second)//右下角 如果有方案數(shù),則可以過來{if(dp[i+1][j+1].first+board[i][j]-'0' > dp[i][j].first)//得分大,更新得分,方案數(shù){dp[i][j].first = dp[i+1][j+1].first+board[i][j]-'0';dp[i][j].second = dp[i+1][j+1].second%1000000007;}else if(dp[i+1][j+1].first+board[i][j]-'0' == dp[i][j].first)//得分相等,方案數(shù)相加{dp[i][j].second += dp[i+1][j+1].second%1000000007;}}if(dp[i][j+1].second)//右邊{if(dp[i][j+1].first+board[i][j]-'0' > dp[i][j].first){dp[i][j].first = dp[i][j+1].first+board[i][j]-'0';dp[i][j].second = dp[i][j+1].second%1000000007;}else if(dp[i][j+1].first+board[i][j]-'0' == dp[i][j].first){dp[i][j].second += dp[i][j+1].second%1000000007;}}if(dp[i+1][j].second)//下邊{if(dp[i+1][j].first+board[i][j]-'0' > dp[i][j].first){dp[i][j].first = dp[i+1][j].first+board[i][j]-'0';dp[i][j].second = dp[i+1][j].second%1000000007;}else if(dp[i+1][j].first+board[i][j]-'0' == dp[i][j].first){dp[i][j].second += dp[i+1][j].second%1000000007;}}}}}return {dp[0][0].first, dp[0][0].second%1000000007};//得分,方案數(shù)} };

總結

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

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