DeepSeek LeetCode.2088统计农场中肥沃金字塔的数目 public int countPyramids(int[][] grid)
·
class Solution {
public int countPyramids(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
int total = 0;
// 正金字塔 (顶部朝上)
int[][] dp = new int[m][n];
for (int i = m - 1; i >= 0; i--) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == 1) {
if (i == m - 1 || j == 0 || j == n - 1) {
dp[i][j] = 1;
} else {
dp[i][j] = 1 + Math.min(dp[i+1][j-1],
Math.min(dp[i+1][j], dp[i+1][j+1]));
}
if (dp[i][j] >= 2) {
total += dp[i][j] - 1;
}
} else {
dp[i][j] = 0;
}
}
}
// 倒金字塔 (顶部朝下)
int[][] dp2 = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (grid[i][j] == 1) {
if (i == 0 || j == 0 || j == n - 1) {
dp2[i][j] = 1;
} else {
dp2[i][j] = 1 + Math.min(dp2[i-1][j-1],
Math.min(dp2[i-1][j], dp2[i-1][j+1]));
}
if (dp2[i][j] >= 2) {
total += dp2[i][j] - 1;
}
} else {
dp2[i][j] = 0;
}
}
}
return total;
}
}
更多推荐



所有评论(0)