首页 > 其他 > 详细

矩形区域不超过 K 的最大数值和

时间:2021-03-04 23:07:51      阅读:42      评论:0      收藏:0      [点我收藏+]

给定一个非空二维矩阵 matrix 和一个整数 k,找到这个矩阵内部不大于 k 的最大矩形和。

示例:

输入: matrix = [[1,0,1],[0,-2,3]], k = 2
输出: 2
解释: 矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。
说明:

矩阵内的矩形区域面积必须大于 0。
如果行数远大于列数,你将如何解答呢?

 

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

class Solution {
public:
    int maxSumSubmatrix(vector<vector<int>> &matrix, int k) {

        int m = matrix.size();
        int n = matrix[0].size();
        int maxV = INT32_MIN;

        for (int i = 0; i < m; ++i) {
            vector<int> temp(n, 0);
            for (int j = i; j < m; ++j) {
                for (int k = 0; k < n; ++k) {
                    temp[k] += matrix[j][k];
                }
                vector<int> tempA(n + 1, 0);
                for (int z = 0; z < n; ++z) {
                    tempA[z + 1] = tempA[z] + temp[z];
                    for (int l = 0; l < z + 1; ++l) {
                        int tempV = tempA[z + 1] - tempA[l];
                        if (tempV > maxV && tempV <= k)
                            maxV = tempV;
                    }
                }
            }
        }
        return maxV;
    }

};


int main() {
    vector<vector<int>> nums{{2, 2, -1}};
    Solution s;
    cout << s.maxSumSubmatrix(nums, 0) << endl;


}

 

我知道我的这个解法很烂,但我不知道有这么烂

技术分享图片

TBC

 

矩形区域不超过 K 的最大数值和

原文:https://www.cnblogs.com/zhangzhangtabszj/p/14483006.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!