leetcode_1292. Максимальная длина стороны квадрата со сумму менее или равно Threshold_ [二维 前缀 和]

Ссылка на тему

Учитывая  m x n матрицу  mat и целое  threshold. Возвращает максимальную боковую длину квадрата с суммой меньше или равно  threshold или возвращать 0 , если нет такого квадрата.

 

Пример 1:

Входной сигнал: мат = [[1,1,3,2,4,3,2], [1,1,3,2,4,3,2], [1,1,3,2,4,3, 2]], порог = 4 
Выход: 2 
Объяснение: максимальная длина стороны квадрата с суммой менее 4 составляет 2 , как показано.

Пример 2:

Входной сигнал: мат = [[2,2,2,2,2], [2,2,2,2,2], [2,2,2,2,2], [2,2,2,2, 2], [2,2,2,2,2]], порог = 1 
Выход: 0

Пример 3:

Входной сигнал: мат = [[1,1,1,1], [1,0,0,0], [1,0,0,0], [1,0,0,0]], порог = 6 
Выходных : 3

Пример 4:

Входной сигнал: мат = [[18,70], [61,1], [25,85], [14,40], [11,96], [97,96], [63,45]], пороговые = 40184 
Выход: 2

 

Ограничения:

  • 1 <= m, n <= 300
  • m == mat.length
  • n == mat[i].length
  • 0 <= mat[i][j] <= 10000
  • 0 <= threshold <= 10^5

  

 


 

Учитывая матрицу, чтобы найти длину стороны одной из самой большой площади, площадь и элементы меньше порогового значения.

Решение:

Префикс и двумерный, сумма [I] [J] представляют [0] [0] по [I] [J] из прямоугольных элементов и, с этой суммой, использование может быть O (строку * кол * мин ( строка, столбец)) временная сложность через всю площадь.

 

class Solution {
public:
    int maxSideLength(vector<vector<int>>& mat, int threshold) {
        int row = mat.size(), col = mat[0].size();
        vector<vector<int>> sum(row+1, vector<int>(col+1, 0));
        for(int i=1; i<=row; i++)
            for(int j=1; j<=col; j++)
                sum[i][j] = sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+mat[i-1][j-1];
        int ret = 0;
        for(int i=1; i<=row; i++)
            for(int j=1; j<=col; j++){
                for(int k=1; k<=min(i, j); k++){
                    int temp = sum[i][j]-sum[i-k][j]-sum[i][j-k]+sum[i-k][j-k];
                    if(temp <= threshold)
                        ret = max(ret, k);
            }
        }
        return ret;
    }
};

 

рекомендация

отwww.cnblogs.com/jasonlixuetao/p/12046466.html