[leetcode] 883. Projection Area of 3D Shapes

网友投稿 1095 2022-08-22

[leetcode] 883. Projection Area of 3D Shapes

[leetcode] 883. Projection Area of 3D Shapes

Description

On a N * N grid, we place some 1 * 1 * 1 cubes that are axis-aligned with the x, y, and z axes.

Each value v = grid[i][j] represents a tower of v cubes placed on top of grid cell (i, j).

Now we view the projection of these cubes onto the xy, yz, and zx planes.

A projection is like a shadow, that maps our 3 dimensional figure to a 2 dimensional plane.

Here, we are viewing the “shadow” when looking at the cubes from the top, the front, and the side.

Return the total area of all three projections.

Example 1:

Input: [[2]]Output: 5

Example 2:

Input: [[1,2],[3,4]]Output: 17Explanation: Here are the three projections ("shadows") of the shape made with each axis-aligned plane.

Example 3:

Input: [[1,0],[0,2]]Output: 8

Example 4:

Input: [[1,1,1],[1,0,1],[1,1,1]]Output: 14

Example 5:

Input: [[2,2,2],[2,1,2],[2,2,2]]Output: 21

Note:

1 <= grid.length = grid[0].length <= 500 <= grid[i][j] <= 50

分析

题目的意思是:给定一个N*N的网格,网格里面的数代表三维坐标下的z,网格的行和列代表x,y。求主视图,左视图,俯视图的面积。

这道题的俯视图很简单,就是N*N的网格中有数的格子数。左视图是网格中每一行遍历的最大值主石图是网格中每一列遍历的最大值

如果知道这些就好办了,写两个循环遍历一下就知道了。

代码

class Solution: def projectionArea(self, grid: List[List[int]]) -> int: res=0 N=len(grid) for i in range(N): max_col=0 max_row=0 for j in range(N): if(grid[i][j]): res+=1 max_row=max(max_row,grid[i][j]) max_col=max(max_col,grid[j][i]) res+=max_col+max_row return res

参考文献

​​solution​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[leetcode] 868. Binary Gap
下一篇:ubuntu 安装mpi4y报错
相关文章

 发表评论

暂时没有评论,来抢沙发吧~