博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
363. Max Sum of Rectangle No Larger Than K
阅读量:6958 次
发布时间:2019-06-27

本文共 1356 字,大约阅读时间需要 4 分钟。

363. Max Sum of Rectangle No Larger Than K

题目链接:

参考discussion里的解释:

先是如何在2d矩阵里找max sum的问题,参考视频:

然后就是一个array里面找不大于k的最大值问题了:

要找到最大的sum <= k, 用cumulative sum就是cum[j] - k <= cum[i],upper_bound就是TreeSet来做了。

行和列哪个打就用另一个扫。

public class Solution {    public int maxSumSubmatrix(int[][] matrix, int k) {        if(matrix.length == 0 || matrix.length == 0) return 0;                int m = matrix.length, n = matrix[0].length;        int global = Integer.MIN_VALUE;        // m >> n        for(int j = 0; j < n; j++) {            int[] col = new int[m];            for(int p = j; p < n; p++) {                // cumulative sum                for(int i = 0; i < m; i++) col[i] += matrix[i][p];                // maximum array sum < k                TreeSet
set = new TreeSet(); // include 1 line set.add(0); int prefixSum = 0, local = Integer.MIN_VALUE; for(int sum : col) { prefixSum += sum; // upper_bound Integer cum = set.ceiling(prefixSum - k); if(cum != null) local = Math.max(local, prefixSum - cum); set.add(prefixSum); } global = Math.max(global, local); } } return global; }}

另外找最大不超过k的range sum还可以用merge sort,参考discussion:

转载地址:http://rrmil.baihongyu.com/

你可能感兴趣的文章
eclipse导入第三方jar包进入web项目的方法
查看>>
发展至今的机器学习到底对我们的就业和社会产生了哪些影响?
查看>>
2017四川电商年度盛典,千机网论道企业变革
查看>>
Ubuntu 16.04安装QQ(不一定成功)
查看>>
四种方法教你破解Linux(CentOS7.4)系统的root密码
查看>>
阿里云郑晓:浅谈GPU虚拟化技术(第一章)
查看>>
用数据分析赢得卓越业务
查看>>
java直接执行jar包
查看>>
Java中的正则表达式
查看>>
Database Visualization using Metabase Part 1 - Install Metabase on Ubuntu 16.04
查看>>
区块链应用 | 2018年,区块链将有这五大新发展
查看>>
【深度荐读】人脑产生意识,可能是因为量子纠缠
查看>>
亚信安全:2017年勒索软件与商业邮件欺骗将继续蔓延
查看>>
每个.NET 开发人员应该下载的十个必备工具
查看>>
为WPF程序中的数据(Model)添加编辑功能
查看>>
eclipse开发web应用程序步骤(图解)
查看>>
GitHub上不错的Android开源项目(三)
查看>>
Osmocom-bb系统编译
查看>>
对象的思维
查看>>
spring-注入map集合
查看>>