# 矩形区域不超过 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)。

示例 2:

输入:matrix = [[2,2,-1]], k = 3
输出:3

 

提示:

 

进阶:如果行数远大于列数,该如何设计解决方案?

## template ```python import bisect class Solution: def maxSumSubmatrix(self, matrix: List[List[int]], k: int) -> int: m = len(matrix) Row, Col = len(matrix), len(matrix[0]) res = float("-inf") for ru in range(Row): col_sum = [0 for _ in range(Col)] for rd in range(ru, Row): for c in range(Col): if matrix[rd][c] == k: return k col_sum[c] += matrix[rd][c] presum = [0] cur_sum = 0 for colsum in col_sum: cur_sum += colsum idx = bisect.bisect_left(presum, cur_sum - k) if idx < len(presum): res = max(res, cur_sum - presum[idx]) if res == k: return k bisect.insort(presum, cur_sum) return res ``` ## 答案 ```python ``` ## 选项 ### A ```python ``` ### B ```python ``` ### C ```python ```