2023年10月12日 星期四

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 xy, 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 xyyz, and zx planes.

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].length
  • 1 <= n <= 50
  • 0 <= 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
       
       


標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁