題221.最大正方形

在一個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。

示例:

輸入: 

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

輸出: 4

方法一:暴力法

由於正方形的面積等於邊長的平方,因此要找到最大正方形的面積,首先需要找到最大正方形的邊長,然後計算最大邊長的平方即可。

暴力法是最簡單直觀的做法,具體做法如下:

  • 遍歷矩陣中的每個元素,每次遇到 1,則將該元素作爲正方形的左上角;
  • 確定正方形的左上角後,根據左上角所在的行和列計算可能的最大正方形的邊長(正方形的範圍不能超出矩陣的行數和列數),在該邊長範圍內尋找只包含 1 的最大正方形;
  • 每次在下方新增一行以及在右方新增一列,判斷新增的行和列是否滿足所有元素都是 1。

C++ 

class Solution {
public:
    int maximalSquare(vector<vector<char>>& matrix) {
        if (matrix.empty() || matrix[0].empty()) return 0;
        int row = matrix.size(),col = matrix[0].size();
        int res = 0;
        vector<vector<int>> dp(row,vector<int>(col,0));
        for(int i=0;i<row;i++)
            
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章