Maximal Square (leetcode 221, lintcode 436)
또한 [row+1] [col+1]의 방법으로 실현할 수 있으며 [0][0]를 0으로 초기화하여 코드를 간결하게 할 수 있다.
int maximalSquare(vector>& matrix) {
if(matrix.empty() || matrix[0].empty()) return 0;
int row = matrix.size(), col = matrix[0].size();
vector> dp(row+1, vector(col+1, 0));
int max_len = 0;
for(int i=1; i<=row; i++){
for(int j=1; j<=col; j++){
if(matrix[i-1][j-1] == '1'){
dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1])) + 1;
max_len = max(max_len, dp[i][j]);
}
}
}
return max_len * max_len;
}
sliding array to further reduce space complexity: 스크롤 그룹의 최적화: 스크롤 그룹은 all row and all column을 초기화하지 못하기 때문에 matrix[i][j]=0 시 건너뛸 수 없습니다. dp[i][j]를 0으로 설정하십시오.
class Solution {
public:
/**
* @param matrix: a matrix of 0 and 1
* @return: an integer
*/
int maxSquare(vector > &matrix) {
// write your code here
if(matrix.empty() || matrix[0].empty()) return 0;
int row = matrix.size(), col = matrix[0].size();
vector> dp(2, vector(col+1, 0));
int max_len = 0;
for(int i=1; i<=row; i++){
for(int j=1; j<=col; j++){
if(matrix[i-1][j-1] == 1){
dp[i%2][j] = min(dp[(i-1)%2][j-1], min(dp[(i-1)%2][j], dp[i%2][j-1])) + 1;
if(dp[i%2][j] > max_len) max_len = dp[i%2][j];
}else{
dp[i%2][j] = 0;
}
}
}
return max_len * max_len;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.