1.题目要求:
给你一个正整数 n ,表示最初有一个 n x n 、下标从 0 开始的整数矩阵 mat ,矩阵中填满了 0 。
另给你一个二维整数数组 query 。针对每个查询 query[i] = [row1i, col1i, row2i, col2i] ,请你执行下述操作:
找出 左上角 为 (row1i, col1i) 且 右下角 为 (row2i, col2i) 的子矩阵,将子矩阵中的 每个元素 加 1 。也就是给所有满足 row1i <= x <= row2i 和 col1i <= y <= col2i 的 mat[x][y] 加 1 。
返回执行完所有操作后得到的矩阵mat
输入:n = 3, queries = [[1,1,2,2],[0,0,1,1]]
输出:[[1,1,0],[1,2,1],[0,1,1]]
解释:上图所展示的分别是:初始矩阵、执行完第一个操作后的矩阵、执行完第二个操作后的矩阵。
- 第一个操作:将左上角为 (1, 1) 且右下角为 (2, 2) 的子矩阵中的每个元素加 1 。
- 第二个操作:将左上角为 (0, 0) 且右下角为 (1, 1) 的子矩阵中的每个元素加 1 。
输入:n = 2, queries = [[0,0,1,1]]
输出:[[1,1],[1,1]]
解释:上图所展示的分别是:初始矩阵、执行完第一个操作后的矩阵。
- 第一个操作:将矩阵中的每个元素加 1 。
题目代码:
class Solution {
public://再此函数进行数组加一的过程void rangeadd(vector<vector<int>>&result,vector<int>& index){int i,j;for(i = index[0];i <= index[2];i++){for(j = index[1];j <= index[3];j++){result[i][j] += 1;}}} vector<vector<int>> rangeAddQueries(int n, vector<vector<int>>& queries) {vector<vector<int>> result;//创造二维容器//给二维容器初始化为0result.resize(n);for(int i = 0;i < n;i++){result[i].resize(n,0);}//再把queries数组的每一行和result一起传递for(int i = 0;i < queries.size();i++){rangeadd(result,queries[i]);}return result; }
};