領扣(LeetCode)二維區域和檢索 個人題解

2022-09-03 09:36:12 字數 914 閱讀 7480

給定乙個二維矩陣,計算其子矩形範圍內元素的總和,該子矩陣的左上角為 (row1, col1) ,右下角為 (row2, col2)。

上圖子矩陣左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),該子矩形內元素的總和為 8。

示例:

給定 matrix = [

[3, 0, 1, 4, 2],

[5, 6, 3, 2, 1],

[1, 2, 0, 1, 5],

[4, 1, 0, 1, 7],

[1, 0, 3, 0, 5]

]sumregion(2, 1, 4, 3) -> 8

sumregion(1, 1, 2, 2) -> 11

sumregion(1, 2, 2, 4) -> 12

說明:

你可以假設矩陣不可變。

會多次呼叫 sumregion 方法。

你可以假設 row1 ≤ row2 且 col1 ≤ col2。

對於這一題,一開始拿到以為是很簡單的,還想著為什麼會放在中等題裡面。

雖然知道可能會出現超時的問題,但是第一次寫還是嘗試了暴力遍歷求區域內值的和。答案雖然是正確的,當然顯而易見報錯了。超時。

後來想到了(其實還是參考了思路,拜託欸,我可是萌新,**接觸過這種空間換時間的神奇操作 xd),其實,每個區域塊到左上角的值都可以簡化為上乙個已經處理過的區域塊的加減乘除的取值,然後加上當前的值。同時,某個子區域的塊也能轉換成以上塊的加減乘除集合。

公式為:

(略)**如下:

class

nummatrix }}

public

int sumregion(int row1, int col1, int row2, int

col2)

}

Leetcode 304 二維區域和檢索

給定乙個二維矩陣,計算其子矩形範圍內元素的總和,該子矩陣的左上角為 row1,col1 右下角為 row2,col2 上圖子矩陣左上角 row1,col1 2,1 右下角 row2,col2 4,3 該子矩形內元素的總和為 8。示例 給定 matrix 3,0,1,4,2 5,6,3,2,1 1,2...

leetcode304 二維區域和檢索 矩陣不可變

給定乙個二維矩陣,計算其子矩形範圍內元素的總和,該子矩陣的左上角為 row1,col1 右下角為 row2,col2 上圖子矩陣左上角 row1,col1 2,1 右下角 row2,col2 4,3 該子矩形內元素的總和為 8。給定 matrix 3,0,1,4,2 5,6,3,2,1 1,2,0,...

308 二維區域和檢索 可變

題目描述 給你乙個 2d 矩陣 matrix,請計算出從左上角 row1,col1 到右下角 row2,col2 組成的矩形中所有元素的和。上述粉色矩形框內的,該矩形由左上角 row1,col1 2,1 和右下角 row2,col2 4,3 確定。其中,所包括的元素總和 sum 8。示例 給定 ma...