1975. Maximum Matrix Sum

更新 發佈閱讀 5 分鐘
https://leetcode.com/problems/maximum-matrix-sum?envType=daily-question&envId=2026-01-05

這一題我願稱之為腦筋急轉彎之騙到我了。

經過了 542 的洗禮後,我看到每個題目都想了想是否可以用 queue 解。這一題我想到了用 queue 的解法,一開始還瞎開心了很久。接著越寫越怪,很多邊界問題我在想要如何解決,看著 print 出來的內容我思考著,想說怎麼會一大坨一直換位置。突然,靈機一動看到範例二猶如醍醐灌頂。阿不就是只要有偶數個複數他們都可以消掉嗎!只要一直換位置就好了。

==

OK 如果有了這個想法,這題說是 easy 中的 easy 也不為過,以下程式碼廢話不多說:

class Solution {
public:

vector<int> DIR = {0, 1, 0, -1, 0};

long long maxMatrixSum(vector<vector<int>>& matrix) {
long long ans = 0;
int min_num = std::numeric_limits<int>::max();
bool neg_count = false;
int n = matrix.size();

for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {

if (matrix[i][j] < 0) {
neg_count = ! neg_count;
ans += matrix[i][j]*(-1);
min_num = min(min_num, matrix[i][j]*(-1));
}
else {
ans += matrix[i][j];
min_num = min(min_num, matrix[i][j]);
}
}
}
if (neg_count) {
ans -= 2 * min_num;
}

return ans;
}
};

Best Solution

因為我的程式碼做法很土炮,附上別人的好看程式碼:

class Solution {
public:
long long maxMatrixSum(vector<vector<int>>& matrix) {
long long totalSum = 0;
int minAbsVal = INT_MAX;
int negativeCount = 0;

for (auto& row : matrix) {
for (int val : row) {
totalSum += abs(val);
if (val < 0) {
negativeCount++;
}
minAbsVal = min(minAbsVal, abs(val));
}
}

// Adjust if the count of negative numbers is odd
if (negativeCount % 2 != 0) {
totalSum -= 2 * minAbsVal;
}

return totalSum;
}
};

可以看到他跟我的差別是用 abs 還有 auto 的遍歷,解掉了一些多餘的 index 計算與乘法計算。

留言
avatar-img
星星在晚上的時候不睡覺
0會員
13內容數
資工系的勞碌人生
2026/01/05
https://leetcode.com/problems/01-matrix?envType=problem-list-v2&envId=rabvlt31 熊熊發現最近我好像特愛暴力法...這題我的解法就是暴力破解,沒什麼含金量,程式碼又臭又長,beat 5%的 runtime and memo
2026/01/05
https://leetcode.com/problems/01-matrix?envType=problem-list-v2&envId=rabvlt31 熊熊發現最近我好像特愛暴力法...這題我的解法就是暴力破解,沒什麼含金量,程式碼又臭又長,beat 5%的 runtime and memo
2026/01/04
https://leetcode.com/problems/four-divisors?envType=daily-question&envId=2026-01-04 找因數並且做相加的題目。找因數是我很害怕的類型,因為我對輾轉相除法之類的真的是永遠背不起來,每次都考過就忘,遇到這題我的知識庫裡就
2026/01/04
https://leetcode.com/problems/four-divisors?envType=daily-question&envId=2026-01-04 找因數並且做相加的題目。找因數是我很害怕的類型,因為我對輾轉相除法之類的真的是永遠背不起來,每次都考過就忘,遇到這題我的知識庫裡就
2026/01/04
https://leetcode.com/problems/number-of-ways-to-paint-n-3-grid?envType=daily-question&envId=2026-01-03 第一個在 leetcode 寫到的 Hard 題目,我覺得這題不算是很難想出解法的類型,他難
2026/01/04
https://leetcode.com/problems/number-of-ways-to-paint-n-3-grid?envType=daily-question&envId=2026-01-03 第一個在 leetcode 寫到的 Hard 題目,我覺得這題不算是很難想出解法的類型,他難
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
題目 : 121. Best Time to Buy and Sell Stock
Thumbnail
題目 : 121. Best Time to Buy and Sell Stock
Thumbnail
題目 : 100. Same Tree
Thumbnail
題目 : 100. Same Tree
Thumbnail
題目 : 83. Remove Duplicates from Sorted List
Thumbnail
題目 : 83. Remove Duplicates from Sorted List
Thumbnail
題目 : 69. Sqrt(x)
Thumbnail
題目 : 69. Sqrt(x)
Thumbnail
題目 : 35. Search Insert Position
Thumbnail
題目 : 35. Search Insert Position
Thumbnail
題目 : 28. Find the Index of the First Occurrence in a String
Thumbnail
題目 : 28. Find the Index of the First Occurrence in a String
Thumbnail
題目:66. Plus One
Thumbnail
題目:66. Plus One
Thumbnail
題目 : 9. Palindrome Number
Thumbnail
題目 : 9. Palindrome Number
Thumbnail
題目 : 14. Longest Common Prefix
Thumbnail
題目 : 14. Longest Common Prefix
Thumbnail
題目 : 13. Roman to Integer
Thumbnail
題目 : 13. Roman to Integer
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News