2020.12.24 LeetCode 从零单刷个人笔记整理(持续更新)

github:https://github.com/ChopinXBP/LeetCode-Babel

原地动态规划 + 前缀和。

遍历每一个位置ij时,将该位的数值置为从该位起左边的数字和,例如对于矩阵

  [1,1,3,2],[1,1,4,3],[1,2,4,2]

遍历结束后效果为:

  [1,2,5,7],[1,2,6,9],[1,3,7,9]

为了统计正方形矩阵的面积,可以假定当前位置ij为正方形的右下角点,这个正方形可能的最大边长为maxlen = Math.min(i, j) + 1。

沿着同一列j向上遍历(也可以优化为二分搜索),遍历行数即为当前正方形的边长len,利用前缀和可以求得当前正方形的每一行的面积rowarea。

rowarea = mat[row][j] - mat[row][j - len];

再将所有行面积遍历加和即可得到正方形的面积。取满足面积要求的最大边长即可。


传送门:元素和小于等于阈值的正方形的最大边长

Given a m x n matrix mat and an integer threshold.

Return the maximum side-length of a square with a sum less than or equal to threshold or return 0 if there is no such square.

给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。

请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。

示例 1:
输入:mat = [[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2]], threshold = 4
输出:2
解释:总和小于 4 的正方形的最大边长为 2,如图所示。示例 2:
输入:mat = [[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2]], threshold = 1
输出:0示例 3:
输入:mat = [[1,1,1,1],[1,0,0,0],[1,0,0,0],[1,0,0,0]], threshold = 6
输出:3示例 4:
输入:mat = [[18,70],[61,1],[25,85],[14,40],[11,96],[97,96],[63,45]], threshold = 40184
输出:2提示:
1 <= m, n <= 300
m == mat.length
n == mat[i].length
0 <= mat[i][j] <= 10000
0 <= threshold <= 10^5


package Problems;/**** Given a m x n matrix mat and an integer threshold.* Return the maximum side-length of a square with a sum less than or equal to threshold or return 0 if there is no such square.* 给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。* 请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。**/public class MaximumSideLengthOfASquareWithSumLessThanOrEqualToThreshold {public int maxSideLength(int[][] mat, int threshold) {int result = 0;for(int i = 0; i < mat.length; i++) {for(int j = 0; j < mat[0].length; j++) {if(j != 0){mat[i][j] += mat[i][j - 1];}int len = 0;int maxlen = Math.min(i, j) + 1;while(len < maxlen){int area = 0;for(int k = 0; k < len + 1; k++) {int prefix = j - len - 1 < 0 ? 0 : mat[i - k][j - len - 1];area += mat[i - k][j] - prefix;}if(area > threshold){break;}len++;}result = len > result ? len : result;}}return result;}
}

#Coding一小时,Copying一秒钟。留个言点个赞呗,谢谢你#

LeetCode(1292):元素和小于等于阈值的正方形的最大边长 Maximum Side Length of a Square(Java)相关推荐

  1. LeetCode 1292. 元素和小于等于阈值的正方形的最大边长(DP)

    1. 题目 给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold. 请你返回元素总和小于或等于阈值的正方形区域的最大边长: 如果没有这样的正方形区域,则返回 0 . 示例 1 ...

  2. 1292. 元素和小于等于阈值的正方形的最大边长-前缀和算法

    1292. 元素和小于等于阈值的正方形的最大边长-前缀和算法 给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold. 请你返回元素总和小于或等于阈值的正方形区域的最大边长:如 ...

  3. 元素和小于等于阈值的正方形的最大边长(来源:力扣(LeetCode))

    元素和小于等于阈值的正方形的最大边长(来源:力扣(LeetCode)) 给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold.请你返回元素总和小于或等于阈值的正方形区域的最大 ...

  4. leetcode1292. 元素和小于等于阈值的正方形的最大边长(二分法+前缀和)

    给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold. 请你返回元素总和小于或等于阈值的正方形区域的最大边长:如果没有这样的正方形区域,则返回 0 . 示例 2: 输入:ma ...

  5. Leetcode-元素和小于等于阈值的正方形的最大边长(python)

    题目 给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold. 请你返回元素总和小于或等于阈值的正方形区域的最大边长:如果没有这样的正方形区域,则返回 0 . 示例 1: 输入 ...

  6. LeetCode Top 100 Liked Questions 221. Maximal Square (Java版; Medium)

    welcome to my blog LeetCode Top 100 Liked Questions 221. Maximal Square (Java版; Medium) 题目描述 Given a ...

  7. 《LeetCode力扣练习》剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java

    <LeetCode力扣练习>剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java 一.资源 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组 ...

  8. 已知正方形面积求边长c语言,正方形知道面积怎么求边长.

    2019-10-09阅读(206) 长方形的周长=(长+宽)×2正方形的周长=边长×4长方形的面积=长×宽正方形的面积=边长×边长三角形的面积=底×高÷2平行四边形的面积=底×高梯形的面积=(上底+下 ...

  9. LeetCode 1277. 统计全为 1 的正方形子矩阵(DP)

    1. 题目 给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数. 示例 1: 输入:matrix = [[0,1,1,1],[1, ...

最新文章

  1. J.U.C--locks--AQS分析
  2. python爬取豆瓣电影并分析_爬取豆瓣电影top250提取电影分类进行数据分析
  3. java英语介绍_java,英文介绍项目.doc
  4. 手写体识别(数据挖掘入门与实践-实验11)
  5. CreateProcess
  6. P4494-[HAOI2018]反色游戏【圆方树】
  7. java找不到符号类socket,编译报错+解决方法:错误: 找不到符号
  8. Java程序性能优化10
  9. 【antlr】antlr语法中的fragment
  10. 阅读SSM项目之scm【第一篇】
  11. poj 1159 Palindrome(dp)
  12. Java使用itextpdf生成PDF文件并添加斜面水印并完成下载(图片导出pdf)
  13. matlab符号函数绘图法_MATLAB符号运算实验
  14. 互联网周刊2022汽车智能服务企业TOP50
  15. rust语言和cargo介绍
  16. oracle gbk 转码,oracle编码格式从utf-8转换为GBK
  17. 关于系统安装之U盘制作【install.wim】
  18. python-Excel多个表格合并
  19. OpenCV | 直线拟合fitline函数
  20. vim的文件比较功能

热门文章

  1. 百度成立智能驾驶事业群组 陆奇亲任总经理
  2. 六个女人五个色,还有一个……
  3. 异步书讯:7月有这样7本程序员新书上架
  4. 计算机中丢失quartz dll,win10系统提示缺少quartz.dll文件的解决方法
  5. 【花雕动手做】有趣好玩的音乐可视化系列小项目(19)--通体光纤灯
  6. win10计算机本地无法连接,win10系统电脑本地连接不见了解决方法
  7. Mysql数据库简单介绍
  8. CGB2105-Day16
  9. 5G传输速度与USB和WIFI传输速度对比
  10. 匿名带你从零开始做四轴-第二期--四轴的硬件组成