leetcode 892. 三维形体的表面积

一时失言乱红尘 2023-07-18 06:53 80阅读 0赞

思路:bfs

只要某个点上有立方体,那么最下面和最上面一定能共享2.至于侧面能否有共享,只需要看周围的4个方向的高度即可。

  1. class Solution {
  2. public:
  3. int surfaceArea(vector<vector<int>>& grid) {
  4. int dr[]{0, 1, 0, -1};
  5. int dc[]{1, 0, -1, 0};
  6. int N = grid.size();
  7. int ans = 0;
  8. for (int r = 0; r < N; ++r)
  9. for (int c = 0; c < N; ++c)
  10. if (grid[r][c] > 0) {
  11. ans += 2;
  12. for (int k = 0; k < 4; ++k) {
  13. int nr = r + dr[k];
  14. int nc = c + dc[k];
  15. int nv = 0;
  16. if (0 <= nr && nr < N && 0 <= nc && nc < N)
  17. nv = grid[nr][nc];
  18. ans += max(grid[r][c] - nv, 0);
  19. }
  20. }
  21. return ans;
  22. }
  23. };

发表评论

表情:
评论列表 (有 0 条评论,80人围观)

还没有评论,来说两句吧...

相关阅读