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

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

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
}

提交结果

相关文章
|
6月前
|
算法 前端开发
三维形体投影面积
三维形体投影面积
31 0
二维坐标系空间变换(详细解读,附MATLAB代码)
二维坐标系空间变换(详细解读,附MATLAB代码)
513 0
二维坐标系空间变换(详细解读,附MATLAB代码)
二维平面的欧几里得距离
二维平面的欧几里得距离
|
6天前
|
算法
[Halcon&几何] 矩形顶点和对角连线角度计算
[Halcon&几何] 矩形顶点和对角连线角度计算
43 0
|
6天前
[Halcon&几何] 直线的垂线与延长线的计算
[Halcon&几何] 直线的垂线与延长线的计算
127 1
|
5月前
|
数据采集 数据管理 大数据
真正用起来,二维比三维更重要
今天这篇文章起这个标题似乎有点逆潮流,但是这确实是开发的表达,同时也是我这两天和开发交流之后最直接的感受,当然这个开发的群体是有一定的限定的,就是时空大数据的开发团队主管,但是这些经验对于建设其他数字孪生类的应有也有着很好的借鉴和参考意义。(本人工作于交通行业,现在本人单位也在建设数字孪生相关内容,有感而发故此想谈谈感受)
|
9月前
|
算法
用于二维和三维声学设计灵敏度分析的奇异边界法(Matlab代码实现)
用于二维和三维声学设计灵敏度分析的奇异边界法(Matlab代码实现)
|
11月前
|
数据可视化 C++
高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
|
12月前
|
机器学习/深度学习 传感器 算法
基于A星算法求解六边形栅格地图路径规划附matlab代码
基于A星算法求解六边形栅格地图路径规划附matlab代码
|
数据可视化 API