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

作文大全网站网上怎么自己审核营业执照

作文大全网站,网上怎么自己审核营业执照,教育培训机构前十名,青色网站欣赏想要精通算法和SQL的成长之路 - 前缀和的应用 前言一. 区域和检索 - 数组不可变二. 二维区域和检索 - 矩阵不可变2.1 前缀和的计算2.2 用前缀和计算二维区域和 三. 矩形区域不超过 K 的最大数值和 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 区域和检索 - 数组不可变 原…

想要精通算法和SQL的成长之路 - 前缀和的应用

  • 前言
  • 一. 区域和检索 - 数组不可变
  • 二. 二维区域和检索 - 矩阵不可变
    • 2.1 前缀和的计算
    • 2.2 用前缀和计算二维区域和
  • 三. 矩形区域不超过 K 的最大数值和

前言

想要精通算法和SQL的成长之路 - 系列导航

一. 区域和检索 - 数组不可变

原题链接
在这里插入图片描述
思路如下:

  1. 我们统计每个元素的前缀和为preSum(i) ,不包括num[i]的值。
  2. 那么对于索引[left, right]之间的和,就可以利用前缀和来计算,值为:preSum(right+1) - preSum(left)

代码如下:

public class NumArray {int[] preSums;public NumArray(int[] nums) {int n = nums.length;// 计算前缀和,指 preSums[i] 在下标i之前的元素和preSums = new int[n + 1];for (int i = 0; i < n; i++) {preSums[i + 1] = preSums[i] + nums[i];}}public int sumRange(int left, int right) {return preSums[right + 1] - preSums[left];}
}

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

原题链接
在这里插入图片描述
在这里插入图片描述

2.1 前缀和的计算

我们先来看下,对于任意一个元素,从下标 (0,0)(i,j) 之间的区域和怎么计算。如图:
在这里插入图片描述
换成代码就是:

preSums[i][j] = preSums[i][j - 1] + preSums[i - 1][j] - preSums[i - 1][j - 1] + matrix[i-1][j-1];

2.2 用前缀和计算二维区域和

如图:我们想计算A到D之间的区域和:
在这里插入图片描述
代码如下:(在设置二维数组的时候,可以增加一行和一列作为虚拟节点,数值为0)

preSums[row2+1][col2+1] - preSums[row2+1][col1] - preSums[row1][col2+1] + preSums[row1][col1];

完整代码如下:

public class NumMatrix {int preSums[][];public NumMatrix(int[][] matrix) {int row = matrix.length + 1;int col = matrix[0].length + 1;preSums = new int[row][col];// 第一列第一行的数值都是0for (int i = 1; i < row; i++) {for (int j = 1; j < col; j++) {preSums[i][j] = preSums[i][j - 1] + preSums[i - 1][j] - preSums[i - 1][j - 1] + matrix[i-1][j-1];}}}public int sumRegion(int row1, int col1, int row2, int col2) {return preSums[row2+1][col2+1] - preSums[row2+1][col1] - preSums[row1][col2+1] + preSums[row1][col1];}
}

三. 矩形区域不超过 K 的最大数值和

原题链接
在这里插入图片描述
这题目可以在题目二的基础上,我们自行遍历,以开始节点(startRow,startCol) 为起始位置,在遍历所有情况的结束节点(endRow,endCol) 之间的区域和。满足条件:

  • startRow <= endRow < row
  • startCol <= endCol < col

由于是二维空间,两个节点,因此一共是4层循环:

public class Test363 {int preSum[][];public int maxSumSubmatrix(int[][] matrix, int k) {int row = matrix.length + 1;int col = matrix[0].length + 1;preSum = new int[row][col];// 结算前缀和for (int i = 1; i < row; i++) {for (int j = 1; j < col; j++) {preSum[i][j] = preSum[i][j - 1] + preSum[i - 1][j] - preSum[i - 1][j - 1] + matrix[i - 1][j - 1];}}int max = Integer.MIN_VALUE;// 起始节点的横纵坐标for (int startRow = 1; startRow < row; startRow++) {for (int startCol = 1; startCol < col; startCol++) {// 结束节点的横纵坐标for (int endRow = startRow; endRow < row; endRow++) {for (int endCol = startCol; endCol < col; endCol++) {// 求得两个节点之间的区域和int sumRegion = sumRegion(startRow, startCol, endRow, endCol);if (sumRegion <= k) {max = Math.max(max, sumRegion);}}}}}return max;}public int sumRegion(int row1, int col1, int row2, int col2) {return preSum[row2][col2] - preSum[row2][col1 - 1] - preSum[row1 - 1][col2] + preSum[row1 - 1][col1 - 1];}
}
http://www.yayakq.cn/news/782324/

相关文章:

  • 瑞安商城网站建设网站建设样本
  • 网站后台无法修改网页设计简单的网站
  • 湖南厦门网站优化个人网站认证
  • 做公司网站的目的是什么鱼骨建站公司
  • 如何再腾讯云服务器做网站新零售是什么模式
  • 做网站联系我们在那个板块里面网站设计策划书 模板
  • 哈尔滨专业的建站报价网站管理的内容
  • 沈阳模板建站系统wordpress写文章打不开
  • 苏宁电器网站建设特点分析西安百度推广代理商
  • 手机做图片的网站城乡住建局官网
  • 凤岗东莞微信网站建设小语种网站建设 cover
  • 戚墅堰做网站手机网站端域名怎样做解析
  • 郑州网站建设设计公司哪家好公司公众号运营方案
  • 精通网站建设 100微信公众平台维护
  • 网站推广设计制作金融网站模板 html下载
  • 网站建设市场定位域通联达网站
  • 多语种外贸网站建设wordpress models
  • 国外电商网站有哪些珠海专业网站建设公司
  • 网站开发上市公司编写一个简单的android程序
  • 个人网站有必要备案吗购物网站建设要多少钱
  • ps2017做网站建一个网页
  • 网站开发宣传方法网站开发设计文档
  • 高端网站建设费用预算珠海市 网站建设
  • 中山移动网站建设多少钱现在的网站一般做多宽最好
  • 建设网站都需要哪些资料做网站 图片更好看
  • 淘客做的网站属于什么类型农村电商平台开发
  • 学做披萨的网站网站后台管理系统背景图片
  • 毕设做网站心得体验初二做网站的首页模板
  • 连州住房建设局网站网络营销薪酬公司
  • 网站后台系统赚钱软件排行