363. Max Sum of Rectangle No Larger Than K
2024-09-29 22:20:25
/*
* 363. Max Sum of Rectangle No Larger Than K
* 2016-7-15 by Mingyang
*/
public int maxSumSubmatrix(int[][] matrix, int target) {
int row = matrix.length;
if(row==0)return 0;
int col = matrix[0].length;
int m = Math.min(row,col);
int n = Math.max(row,col);
//indicating sum up in every row or every column
boolean colIsBig = col>row;
int res = Integer.MIN_VALUE;
for(int i = 0;i<m;i++){
int[] array = new int[n];
// sum from row j to row i
for(int j = i;j>=0;j--){
int val = 0;
TreeSet<Integer> set = new TreeSet<Integer>();
set.add(0);
//traverse every column/row and sum up
for(int k = 0;k<n;k++){
array[k]=array[k]+(colIsBig?matrix[j][k]:matrix[k][j]);
val = val + array[k];
//use TreeMap to binary search previous sum to get possible result
Integer subres = set.ceiling(val-target);
if(null!=subres){
res=Math.max(res,val-subres);
}
set.add(val);
}
}
}
return res;
}
最新文章
- oracle连接方式、创建数据库用户、忘记数据库密码、用户锁定
- PHP如何获取二个日期的相差天数?
- 第二次作业:Github的使用
- 第16/24周 SQL Server 2014中的基数计算
- deep learning
- 012医疗项目-模块一:统一异常处理器的设计思路及其实现(涉及到了Springmvc的异常处理流程)
- Spark和Hadoop作业之间的区别
- A题笔记(8)
- 【JavaScript】轻易改变的背景和字体颜色页面
- Bootstrap环境及屏幕适配-(一)
- Hibernate第七篇【对象状态、一级缓存】
- asp.net core系列 60 Ocelot 构建服务认证示例
- Eclipse显示行号
- 变量类型-Dict
- docker swarm集群搭建以及使用滚动更新
- 《Head First设计模式》批注系列(一)——观察者设计模式
- SpringBoot整合定时任务
- unity实现用鼠标右键控制摄像机视角上下左右移动
- 再说Android RecyclerView局部刷新那个坑
- 常用Java字符API