LINTCODE——最大正方形
思路:暂时没想到怎么快速找出来,用的是遍历的方法,另外写个check函数主要是为了以后修改;
class Solution {
public:
/*
* @param matrix: a matrix of 0 and 1
* @return: an integer
*/
int maxSquare(vector<vector<int>> matrix) {
// write your code here
int count = 0;
int m = matrix.size();
int n = matrix[0].size();
for(int i = 0 ; i < m ; i++)
{
for(int j = 0 ; j < n ;j++)
{
if(matrix[i][j] == 1)
count = max(count , check(matrix,i,j));
}
}
return count;
}
int check(vector<vector<int>> &matrix , int row ,int line)
{
int m = matrix.size();
int n = matrix[0].size();
int num = 1;
for(int i = row + 1,j = line + 1; i < m && j < n; i++,j++)
{
int li = row,lj = line;
//每次只判断新加的一条边是否全为;
while(li <= i && lj <= j)
{
if(matrix[li][j] != 1 || matrix[i][lj] != 1)
return num*num;
li++,lj++;
}
num++;
}
return num*num;
}
};