598 範圍求和 II 思路很關鍵!

2021-10-23 10:29:15 字數 986 閱讀 9788

給定乙個初始元素全部為 0,大小為 m*n 的矩陣 m 以及在 m 上的一系列更新操作。

操作用二維陣列表示,其中的每個操作用乙個含有兩個正整數 a 和 b 的陣列表示,含義是將所有符合 0 <= i < a 以及 0 <= j < b 的元素 m[i][j] 的值都增加 1。

在執行給定的一系列操作後,你需要返回矩陣中含有最大整數的元素個數。

示例 1:

輸入: 

m = 3, n = 3

operations = [[2,2],[3,3]]

輸出: 4

解釋: 

初始狀態, m = 

[[0, 0, 0],

[0, 0, 0],

[0, 0, 0]]

執行完操作 [2,2] 後, m = 

[[1, 1, 0],

[1, 1, 0],

[0, 0, 0]]

執行完操作 [3,3] 後, m = 

[[2, 2, 1],

[2, 2, 1],

[1, 1, 1]]

m 中最大的整數是 2, 而且 m 中有4個值為2的元素。因此返回 4。

注意:m 和 n 的範圍是 [1,40000]。

a 的範圍是 [1,m],b 的範圍是 [1,n]。

運算元目不超過 10000。

我的暴力法:

class solution 

}return mp.get(max);

}}

超記憶體了,可能是建了比較大的二維陣列導致的。看了一下答案恍然大悟——用最小的ma*最小的mb就是了:

class solution 

int ma=integer.max_value;int mb=integer.max_value;

for(int i=0;iif(ops[i][1]}

return ma*mb;

}}

598 範圍求和 II

給定乙個初始元素全部為0,大小為 m n 的矩陣m以及在m上的一系列更新操作。操作用二維陣列表示,其中的每個操作用乙個含有兩個正整數 a和b的陣列表示,含義是將所有符合0 i a以及0 j b的元素m i j 的值都增加 1。在執行給定的一系列操作後,你需要返回矩陣中含有最大整數的元素個數。示例 1...

598 範圍求和II

給定乙個初始元素全部為 0,大小為 m n 的矩陣 m 以及在 m 上的一系列更新操作。操作用二維陣列表示,其中的每個操作用乙個含有兩個正整數 a 和 b 的陣列表示,含義是將所有符合 0 i a 以及 0 j b 的元素 m i j 的值都增加 1。在執行給定的一系列操作後,你需要返回矩陣中含有最...

Leetcode 總結 598 範圍求和 II

q 給定乙個初始元素全部為0,大小為 m n 的矩陣m以及在m上的一系列更新操作。操作用二維陣列表示,其中的每個操作用乙個含有兩個正整數 a和b的陣列表示,含義是將所有符合0 i a以及0 j b的元素m i j 的值都增加 1。在執行給定的一系列操作後,你需要返回矩陣中含有最大整數的元素個數。示例...