-
Notifications
You must be signed in to change notification settings - Fork 2
/
304.二维区域和检索-矩阵不可变.go
89 lines (83 loc) · 2.09 KB
/
304.二维区域和检索-矩阵不可变.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
* @lc app=leetcode.cn id=304 lang=golang
*
* [304] 二维区域和检索 - 矩阵不可变
*
* https://leetcode.cn/problems/range-sum-query-2d-immutable/description/
*
- algorithms
- Medium (59.62%)
- Likes: 419
- Dislikes: 0
- Total Accepted: 99.7K
- Total Submissions: 167K
- Testcase Example: '["NumMatrix","sumRegion","sumRegion","sumRegion"]\n' +
'[[[[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]]],[2,1,4,3],[1,1,2,2],[1,2,2,4]]'
*
* 给定一个二维矩阵 matrix,以下类型的多个请求:
*
*
* 计算其子矩形范围内元素的总和,该子矩阵的 左上角 为 (row1, col1) ,右下角 为 (row2, col2) 。
*
*
* 实现 NumMatrix 类:
*
*
* NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化
* int sumRegion(int row1, int col1, int row2, int col2) 返回 左上角 (row1, col1)
* 、右下角 (row2, col2) 所描述的子矩阵的元素 总和 。
*
*
*
*
* 示例 1:
*
*
*
*
* 输入:
* ["NumMatrix","sumRegion","sumRegion","sumRegion"]
*
* [[[[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]]],[2,1,4,3],[1,1,2,2],[1,2,2,4]]
* 输出:
* [null, 8, 11, 12]
*
* 解释:
* NumMatrix numMatrix = new
* NumMatrix([[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]]);
* numMatrix.sumRegion(2, 1, 4, 3); // return 8 (红色矩形框的元素总和)
* numMatrix.sumRegion(1, 1, 2, 2); // return 11 (绿色矩形框的元素总和)
* numMatrix.sumRegion(1, 2, 2, 4); // return 12 (蓝色矩形框的元素总和)
*
*
*
*
* 提示:
*
*
* m == matrix.length
* n == matrix[i].length
* 1 <= m, n <= 200
* -10^5 <= matrix[i][j] <= 10^5
* 0 <= row1 <= row2 < m
* 0 <= col1 <= col2 < n
* 最多调用 10^4 次 sumRegion 方法
*
*
*/
package jzoffer
// @lc code=start
type NumMatrix struct {
}
func Constructor(matrix [][]int) NumMatrix {
return NumMatrix{}
}
func (this *NumMatrix) SumRegion(row1 int, col1 int, row2 int, col2 int) int {
return 0
}
/**
* Your NumMatrix object will be instantiated and called as such:
* obj := Constructor(matrix);
* param_1 := obj.SumRegion(row1,col1,row2,col2);
*/
// @lc code=end