10/11 每日一題(計算3維的陰影面積)
You are given an n x n grid where we place some 1 x 1 x 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 the cell (i, j).
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. 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: grid = [[1,2],[3,4]]
Output: 17
Explanation: Here are the three projections ("shadows") of the shape made with each axis-aligned plane.
Example 2:
Input: grid = [[2]] Output: 5
Example 3:
Input: grid = [[1,0],[0,2]] Output: 8
Constraints:
n == grid.length == grid[i].length1 <= n <= 500 <= grid[i][j] <= 50
class Solution:
def projectionArea(self, grid: List[List[int]]) -> int:
res=0
#X-Y
#X-Z
m=len(grid[0])
max_hight=0
for i in grid:
print(f'x-z 長={(max(i))}')
res+=max(i)
print(f'加上y-z前={res}')
for i in range(len(grid)):
y_z=0
for j in range(m):
y_z=max(y_z,grid[j][i])
print(f'i={i},j={j},檢查的grid[j][i]={grid[j][i]}')
if grid[i][j]!=0:
#處理x-y, 當有值得前提下才會有影子
res+=1
print(f'y_z={y_z}')
res+=y_z
print(f'res={res}')
return res
標籤: leetcode

0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁