给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。
题目数据保证总会存在一个数值和不超过 k 的矩形区域。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-sum-of-rectangle-no-larger-than-k
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public int maxSumSubmatrix(int[][] matrix, int k) {
int m = matrix.length; //行数
int n = matrix[0].length; //列数
int max = Integer.MIN_VALUE;
for(int i = 0; i < m; i++){ //枚举上边界
int[] sum = new int[n];
for(int j = i; j < m; j++){ //枚举下边界
for(int l = 0; l < n; l++){
sum[l] += matrix[j][l]; //求列和
}
int temp = findMax(sum, k); //找出<= k的最大列和
if(temp > max){
max =temp;
}
}
}
return max;
}
public int findMax(int[] sum, int k){
int res = Integer.MIN_VALUE;
int n = sum.length;
for(int i = 0; i < n; i++){
int temp = 0;
for(int j = i; j < n; j++){
temp += sum[j];
if(temp > res && temp <= k){
res = temp;
}
}
}
return res;
}
}