/*
* 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;
}

最新文章

  1. oracle连接方式、创建数据库用户、忘记数据库密码、用户锁定
  2. PHP如何获取二个日期的相差天数?
  3. 第二次作业:Github的使用
  4. 第16/24周 SQL Server 2014中的基数计算
  5. deep learning
  6. 012医疗项目-模块一:统一异常处理器的设计思路及其实现(涉及到了Springmvc的异常处理流程)
  7. Spark和Hadoop作业之间的区别
  8. A题笔记(8)
  9. 【JavaScript】轻易改变的背景和字体颜色页面
  10. Bootstrap环境及屏幕适配-(一)
  11. Hibernate第七篇【对象状态、一级缓存】
  12. asp.net core系列 60 Ocelot 构建服务认证示例
  13. Eclipse显示行号
  14. 变量类型-Dict
  15. docker swarm集群搭建以及使用滚动更新
  16. 《Head First设计模式》批注系列(一)——观察者设计模式
  17. SpringBoot整合定时任务
  18. unity实现用鼠标右键控制摄像机视角上下左右移动
  19. 再说Android RecyclerView局部刷新那个坑
  20. 常用Java字符API

热门文章

  1. 计算时间复杂度&amp;空间复杂度
  2. Js中的undefined和not defined
  3. 二叉树遍历(Java实现)
  4. Hive官方文档
  5. leetcode 【 Reverse Linked List II 】 python 实现
  6. VMware Fusion Pro安装Ubuntu 18.04.1
  7. Python-S9-Day127-Scrapy爬虫框架2
  8. LeetCode668马在棋盘上的概率
  9. 精通CSS高级Web标准解决方案(4、对链接应用样式)
  10. Leetcode 565.数组嵌套