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

算法:矩形区域不超过k的数值和

题目

给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。

题目数据保证总会存在一个数值和不超过 k 的矩形区域。

示例 1:

输入:matrix = [[1,0,1],[0,-2,3]], k = 2
输出:2
解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。

题解

class Solution {public int maxSumSubmatrix(int[][] matrix, int k) {int m = matrix.length, n = matrix[0].length;int res = Integer.MIN_VALUE;//矩形上边界for (int i = 0; i < m;i++){// 存储每一列上下边界的之间的每一列面积int[] sum = new int[n];//矩形下边界for (int j = i;j<m;j++){//加入新的下边界就更新sum数组的值for(int c = 0; c < n;c++){sum[c] += matrix[j][c];}TreeSet<Integer> sumSet = new TreeSet<>();sumSet.add(0);int s = 0;//遍历每一列上下边界的和for (int v : sum) {//将每一列的面积相加的到一个矩形面积,这个面积是第一列到当前列的总矩形面积和s += v;//从前面的矩形面积中找一个大于s-k的最小值,然后总矩形面积s-ceil的值就是小于K且是最大的矩形面积// 这个方法利用到了二分,提升性能Integer ceil = sumSet.ceiling(s-k);if(ceil!=null){//总矩形面积-ceil的值就是小于K且是最大的矩形面积res = Math.max(s-ceil, res);}//将面积加入set中sumSet.add(s);}}}return res;}
}

http://www.dtcms.com/a/589161.html

相关文章:

  • 算法30.0
  • 算法基础篇:(四)基础算法之前缀和
  • Nginx优化与防盗链
  • Vue-vuex 核心概念和 API
  • 分治归并算法第一弹
  • 【数据结构】哈夫曼树技术详解:原理、算法与应用
  • 贵阳网站备案在哪里网站红色
  • 个人网站公司网站区别经营区别数字货币怎么推广赚钱
  • 3GPP 各主要 Release(版本)及其发布时间和主要内容
  • RK3588同时硬解和GPU绘制16路1080P/通用其他RK系列板子/嵌入式监控系统/支持国产硬件和系统
  • BB ACS355变频器家装EMC电源滤波安装与使用指南
  • ARMV9.7 FEAT_SME2p3 视频编解码器新增指令扩展
  • 基础开发工具(下)
  • 一文详解分布式事务
  • HarmonyOS DataShareExtension深度解析:构建安全高效的数据共享架构
  • 团风做网站网站建站前期准备工作
  • .net 网站开发架构企业网站设置
  • 面试题 16.25. LRU 缓存
  • st表详解
  • 企业网站优化甲薇g71679做同等效果下拉词做网站白云
  • 9、webgl 基本概念 + 复合变换 + 平面内容复习
  • gRPC C++库架构与异步编程实践
  • 做网站如何收益发送wordpress
  • 人工智能备考——4部分总结
  • Vite.js 快速入门指南 (React + JavaScript 版)
  • 如何建微信商城网站wordpress手机模板
  • 基于springboot纺织品企业财务管理系统【带源码和文档】
  • CHAR、VARCHAR、TEXT 的差别与存储方式
  • QtMainWindow C++详解:构建桌面应用的核心框架
  • 红帽虚拟机,NG搭建网站练习