leetcode 221. Maximal Square
今天晏老师讲依赖论文,确实我有这个毛病,做题也比较依赖答案,其实重要的不是答案,而是解题的思路,这世上没有标准答案,所谓的标准答案都是多种可能实现的极致,它不是先验存在的,而是被创造出来的。
比如这题,如此简单的题,思路很容易有。
师兄说教育是教人自信,有道理。
public class Solution {
public int maximalSquare(char[][] a) {
int m = a.length;
if(m==0) return 0;
int n = a[0].length;
int min = m<n?m:n;
int ans = 0;
for(int k=0;k<min;k++){
boolean tk = false;
for(int i=0;i+k<m;i++){
for(int j=0;j+k<n;j++){
boolean tij = true;
// calculate if
for(int ti=0;ti<=k;ti++){
for(int tj=0;tj<=k;tj++){
if(a[i+ti][j+tj]=='0') {
tij = false;
break;
}
}
if(!tij) break;
}
if(tij){
tk=true;
ans = (k+1)*(k+1);
break;
}
}
if(tk) break;
}
if(!tk) break;
}
return ans;
}
}
本文解析了LeetCode上的经典题目——最大正方形(Maximal Square)的求解思路与算法实现。通过一个简洁明了的例子,介绍了如何通过双重循环遍历二维数组来寻找最大的全为1的正方形,并给出了完整的Java代码实现。
248

被折叠的 条评论
为什么被折叠?



