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

聊城市住房和城乡建设局网站整站优化多少钱

聊城市住房和城乡建设局网站,整站优化多少钱,自己做网站可以随便起名字吗,网络代理网站文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 中等 三【题目编号】 304.二维区域和检索-矩阵不可变 四【题目描述】 …

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 矩阵

二【题目难度】

  • 中等

三【题目编号】

  • 304.二维区域和检索-矩阵不可变

四【题目描述】

  • 给定一个二维矩阵 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 = = m a t r i x . l e n g t h m == matrix.length m==matrix.length
  • n = = m a t r i x [ i ] . l e n g t h n == matrix[i].length n==matrix[i].length
  • 1 < = m , n < = 200 1 <= m, n <= 200 1<=m,n<=200
  • − 1 0 5 < = m a t r i x [ i ] [ j ] < = 1 0 5 -10^5 <= matrix[i][j] <= 10^5 105<=matrix[i][j]<=105
  • 0 < = r o w 1 < = r o w 2 < m 0 <= row1 <= row2 < m 0<=row1<=row2<m
  • 0 < = c o l 1 < = c o l 2 < n 0 <= col1 <= col2 < n 0<=col1<=col2<n
  • 最多调用 1 0 4 次 s u m R e g i o n 方法 最多调用 10^4 次 sumRegion 方法 最多调用104sumRegion方法

七【解题思路】

  • 利用前缀和的思想
  • 新建一个二维数组,这个二维数组比原来的二维数组多一列,因为二维数组的每个位置都存储了之前元素的和,故多添加的一列就存储了原来二维数组最后一列的元素及之前值的和,我们只需要按照这个规律遍历填充这个新的二维数组即可
  • 对于传入的二维区域,我们只需要逐行的利用前缀和进行计算求和
  • 最后返回结果即可

八【时间频度】

  • 时间复杂度: O ( m n ) O(mn) O(mn) m 、 n m、n mn分别为传入的二维数组的行数和列数
  • 空间复杂度: O ( m n ) O(mn) O(mn) m 、 n m、n mn分别为传入的二维数组的行数和列数

九【代码实现】

  1. Java语言版
class NumMatrix {int[][] sums;public NumMatrix(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;sums = new int[m][n+1];for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){sums[i][j + 1] = sums[i][j] + matrix[i][j];}}}public int sumRegion(int row1, int col1, int row2, int col2) {int res = 0;for(int i = row1;i <= row2;i++){res += sums[i][col2 + 1] - sums[i][col1];}return res;}}
  1. C语言版
typedef struct 
{int** sums;int sumsSize;
} NumMatrix;NumMatrix* numMatrixCreate(int** matrix, int matrixSize, int* matrixColSize) 
{int m = matrixSize;int n = matrixColSize[0];NumMatrix* obj = (NumMatrix*)malloc(sizeof(NumMatrix));obj->sums = (int**)malloc(sizeof(int*) * m);obj->sumsSize = m;for(int i = 0;i < m;i++){obj->sums[i] = (int*)malloc(sizeof(int) * (n + 1));}for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){obj->sums[i][j + 1] = obj->sums[i][j] + matrix[i][j];}}return obj;
}int numMatrixSumRegion(NumMatrix* obj, int row1, int col1, int row2, int col2) 
{int res = 0;for(int i = row1;i <= row2;i++){res += obj->sums[i][col2 + 1] - obj->sums[i][col1];}return res;
}void numMatrixFree(NumMatrix* obj) 
{for(int i = 0;i < obj->sumsSize;i++){free(obj->sums[i]);}free(obj);
}
  1. Python语言版
class NumMatrix:def __init__(self, matrix: List[List[int]]):m = len(matrix)n = len(matrix[0])self.sums = [[0] * (n + 1) for _ in range(m)]for i in range(0, m):for j in range(0, n):self.sums[i][j + 1] = self.sums[i][j] + matrix[i][j]def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:res = 0for i in range(row1, row2 + 1):res += self.sums[i][col2 + 1] - self.sums[i][col1]return res
  1. C++语言版
class NumMatrix {
public:vector<vector<int>> sums;NumMatrix(vector<vector<int>>& matrix) {int m = matrix.size();int n = matrix[0].size();sums.resize(m, vector<int>(n + 1));for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){sums[i][j + 1] = sums[i][j] + matrix[i][j];}}}int sumRegion(int row1, int col1, int row2, int col2) {int res = 0;for(int i = row1;i <= row2;i++){res += sums[i][col2 + 1] - sums[i][col1];}return res;}
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

http://www.shuangfujiaoyu.com/news/271.html

相关文章:

  • 深圳有没有什么网站沧州做网络推广的平台
  • 做网站骗局网络营销常用的工具有哪些
  • 个人主页链接怎么填写seo实战培训
  • 制作游戏的网站腾讯竞价广告
  • 查网站死链必用工具2022年关键词排名
  • wix做网站步骤西安网站推广
  • 做母亲节网站的素材谷歌google地图
  • 青岛做网站哪家好查网站排名
  • 深圳服饰网站建设谷歌网站网址
  • 怎么在百度里面找网站百度云资源链接分享群组
  • 北京市住房建设委员会申请网站百度引擎搜索网址
  • 城市建设网站网络营销的成功案例分析
  • 做网站直播的主播靠谱吗营销推广方案ppt案例
  • dreamweaver 网站框架优化问题
  • 自做视频网站赚钱吗优化关键词的正确方法
  • 重庆江北区网站建设全国广告投放平台
  • 个人设计作品集北京seo推广系统
  • 快速建立平台网站开发网络服务商电话
  • 网站和站点的区别万能bt搜索引擎
  • soho外贸网站建设宁波seo外包费用
  • 网站建设规划表seo优化网站快速排名
  • 不花钱的网站怎么做郑州网络seo
  • 用asp做网站的流程seo网络推广公司排名
  • 专门做设计的网站有哪些深圳seo排名
  • wordpress仿微信底部菜单cssseo公司官网
  • 柳州市网站制作公司怎么网上推广自己的产品
  • 傻瓜网站建设软件肇庆网站快速排名优化
  • 网站调用微信数据国际购物网站平台有哪些
  • 自己做的网站能在线支付shodan搜索引擎
  • 人人设计网主页seo搜索引擎排名优化