每日一题—— 三维形体投影面积

简介: 每日一题—— 三维形体投影面积

883. 三维形体投影面积

题目描述

在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。

每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。

现在,我们查看这些立方体在 xy 、yz 和 zx 平面上的投影。

投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。

返回 所有三个投影的总面积 。

思路

正视图:每一行最大值之和;

侧视图:每一列最大值之和;

俯视图:柱子个数;

题解

func projectionArea(grid [][]int) int {
  n := len(grid)
  xoyProjectionArea, yozProjectionArea, xozProjectionArea := 0, 0, 0
  for i := 0; i < n; i++ {
    rowMax, colMax := math.MinInt64, math.MinInt64
    for j := 0; j < n; j++ {
      if len(grid)>i {
        if len(grid[i])>j {
          // 俯视图: 柱子数
          if grid[i][j] != 0 {
            xoyProjectionArea++
          }
          rowMax = max(rowMax, grid[i][j])
        }
      }
      if len(grid)>j {
        if len(grid[j])>i {
          colMax = max(colMax, grid[j][i])
        }
      }
    }
    // 侧视图: 每一列的最大值之和
    yozProjectionArea += rowMax
    // 正视图: 每一行的最大值之和
    xozProjectionArea += colMax
  }
  return xozProjectionArea + xoyProjectionArea + yozProjectionArea
}
func max(a, b int) int {
  if a > b {
    return a
  }
  return b
}

提交结果

相关文章
|
算法 前端开发
三维形体投影面积
三维形体投影面积
52 0
二维坐标系空间变换(详细解读,附MATLAB代码)
二维坐标系空间变换(详细解读,附MATLAB代码)
887 0
二维坐标系空间变换(详细解读,附MATLAB代码)
|
6月前
[Halcon&几何] 直线的垂线与延长线的计算
[Halcon&几何] 直线的垂线与延长线的计算
346 1
|
6月前
[贴装专题] 基于halcon的最小二乘法计算吸嘴或机械轴旋转中心
[贴装专题] 基于halcon的最小二乘法计算吸嘴或机械轴旋转中心
186 0
|
6月前
|
算法
[Halcon&拟合] 直线、矩形和圆的边缘提取
[Halcon&拟合] 直线、矩形和圆的边缘提取
391 0
|
数据可视化 C++
高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
|
数据可视化 API
|
算法
LeetCode——883. 三维形体投影面积
LeetCode——883. 三维形体投影面积
109 0
LeetCode——883. 三维形体投影面积
|
前端开发 数据可视化 图形学
【数学篇】09 # 如何用仿射变换对几何图形进行坐标变换?
【数学篇】09 # 如何用仿射变换对几何图形进行坐标变换?
152 0
【数学篇】09 # 如何用仿射变换对几何图形进行坐标变换?
|
图形学
【计算机图形学】期末复习part2:二维与三维图形变换
【计算机图形学】期末复习part2:二维与三维图形变换
169 0
【计算机图形学】期末复习part2:二维与三维图形变换