leetcode第221题 最大的正方形
思路:
- 创建长和宽都比原来大一,争取遍历一次原来的数组就可以得到所需要的答案。
- 明确dp数组的定义:位置 ij 最大的正方形的边数。
- 就给自己设定死吧!创建dp数组的时候一定格子数多一点。
func maximalSquare(matrix [][]byte) int {
//为什么就是找不见定义了
row := len(matrix)
cal := len(matrix[0])
dp := make([][]int,row + 1)
for i := range dp{
dp[i] = make([]int,cal + 1)
}
max := 0
for i := 1;i <= row;i++{
for j := 1;j <= cal;j++{
if matrix[i- 1][j - 1] != '1'{
continue
}
dp[i][j] = min(dp[i - 1][j - 1],min(dp[i - 1][j],dp[i][j - 1])) + 1
area := dp[i][j] * dp[i][j]
if max < area{
max = area
}
}
}
return max
}
func min (i,j int)int{
if i < j{
return i
}
return j
}