当前位置: 首页 > article >正文

leetcode 2536.子矩阵元素加一

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;//创造二维容器
        //给二维容器初始化为0
        result.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; 
    }
};

http://www.kler.cn/news/353618.html

相关文章:

  • @zabbix监控网站黑链接监控及数据推送
  • 深度学习-26-基于PyTorch的多层感知机DNN
  • Dubbo快速入门(二):第一个Dubbo程序(附源码)
  • Linux的习题+一道回溯类型的算法题
  • 数据结构--链表
  • Java 类和对象详解(上 )
  • 关于通信协议中PDCP的相关知识
  • WPF 已知问题 在 ObservableCollection 的 CollectionChanged 修改集合内容将让 UI 显示错误...
  • 【开源物联网平台】Fastbee系统稳定性和压测报告
  • Android 自定义Toast显示View
  • 【MySQL】数据库基础指令(一)
  • FlinkCDC 实现 MySQL 数据变更实时同步
  • jvm垃圾收集器简介
  • Ability内页面的跳转和数据传递(router和want显/隐跳转)
  • 美客多产品没流量?不要只看广告!
  • mysql高级sql语句 二
  • Python中的help()函数:追踪错误并提供解决方案
  • JDK、JRE、JVM相关知识点
  • 626,换座位
  • 简述Linux和RTOS