zoukankan      html  css  js  c++  java
  • max-sum-of-sub-matrix-no-larger-than-k

    根据上一篇文章提到的参考文档:

    https://leetcode.com/discuss/109749/accepted-c-codes-with-explanation-and-references

    我实现的解法,用了一个sum_max,不再另设res。

    class Solution {
    public:
        int maxSumSubmatrix(vector<vector<int>>& matrix, int K) {
            int sum_max = INT_MIN;
            int rlen = matrix.size();
            int clen = matrix[0].size();
            
            for (int i=0; i<clen; i++) {
                vector<int> tmp_vec(rlen, 0);
                for (int j=i; j<clen; j++) {
                    for (int k=0; k<rlen; k++) {
                        tmp_vec[k] += matrix[k][j];
                    }
                    
                    set<int> cur_max_set;
                    int cur_max = 0;
                    for (int k=0; k<rlen; k++) {
                        cur_max += tmp_vec[k];
                        if (cur_max <= K) {
                            sum_max = max(sum_max, cur_max);
                        }
                        set<int>::iterator iter = cur_max_set.lower_bound(cur_max - K);
                        if (iter != cur_max_set.end()) {
                            sum_max = max(sum_max, cur_max-*iter);
                        }
                        cur_max_set.insert(cur_max);
                    }
                }
            }
            return sum_max;
        }
    };
    27 / 27 test cases passed.
    Status: 

    Accepted

    Runtime: 1016 ms
  • 相关阅读:
    不用加减乘除做加法
    求1+2+3+...+n
    孩子们的游戏(圆圈中最后剩下的数)
    扑克牌顺子
    翻转单词顺序列
    左旋转字符串
    和为S的两个数字
    和为S的连续正数序列
    毕设进度12
    毕设进度11
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5620066.html
Copyright © 2011-2022 走看看