日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python求球的表面积_892. 三维形体的表面积(Python)

發布時間:2024/9/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python求球的表面积_892. 三维形体的表面积(Python) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

難度:★★☆☆☆

類型:幾何、數學、二維數組

在 N * N 的網格上,我們放置一些 1 * 1 * 1 的立方體。

每個值 v = grid[i][j] 表示 v 個正方體疊放在單元格 (i, j) 上。

返回最終形體的表面積。

提示

1 <= N <= 50

0 <= grid[i][j] <= 50

示例

示例 1

輸入:[[2]]

輸出:10

示例 2

輸入:[[1,2],[3,4]]

輸出:34

示例 3

輸入:[[1,0],[0,2]]

輸出:16

示例 4

輸入:[[1,1,1],[1,0,1],[1,1,1]]

輸出:32

示例 5

輸入:[[2,2,2],[2,1,2],[2,2,2]]

輸出:46

解答

這道題與【題目463. 島嶼的周長】屬于同一類,相當于將二維擴展到了三維。

循環。由于題目已經告知我們,搜索范圍是50*50的方格(grid),因此我們可以遍歷每一個方格,查看這些方格上是否存在四棱柱。

表面積的處理。這是這個問題的重點和難點,當某一個正方形(grid[i][j])上存在四棱柱時,四棱柱的上下底面是無法被遮擋的,因此最終結果一定包含上下底面,可能被遮擋的部分只有四個方向的側面,如果側面相鄰位置存在棱柱,那么當前棱柱肯定會有一部分表面被遮擋起來,且遮擋的面積取決于兩者的高度。

我們計算當前棱柱grid[i][j]貢獻的表面積:

底面:首先將兩個底面的面積加入結果中:ans=ans+2;

側面:四個相鄰位置(i+1, j), (i-1, j), (i, j+1), (i, j-1)分別考慮,如果其中一個位置存在高度為h的棱柱,那么當前高為grid[i][j]的棱柱被遮擋的部分高度為min(h, grid[i][j]),貢獻了grid[i][j]-min(h, grid[i][j])=max(0, grid[i][j]-h)的表面積,其中h既是相鄰棱柱的高度,也可以認為是兩者接觸面的面積,我們定義為concat。

例如[[1,5]],表示[0, 0]方格上放一個高度為1的棱柱A,[0, 1]方格上放一個高度為5的棱柱B,棱柱B貢獻的表面積的計算方式為:2(兩個底面)+3*5(三個沒有棱柱相鄰的側面)+(5-1)(與棱柱A接壤的側面)=21。

邊界。如果某一個棱柱已經在邊界上,我們考察其周圍四個相鄰方向時,可能發現一個方向上已經超出棋盤范圍,我們認為這個超出棋盤的位置上沒有棱柱,也就是該相鄰位置與當前接觸面的面積concat為零,這個面貢獻的表面積實際上就是當前棱柱的高度。

例如上述案例中,棱柱A貢獻的表面積是:2(兩個底面)+1(在邊緣的側面)+1(在邊緣的側面)+1(沒有棱柱接壤的側面)+0(與棱柱B接壤的側面)=5,兩個棱柱一共貢獻表面積21+5=26。

編碼過程如下:

class Solution:

def surfaceArea(self, grid):

"""

:param grid: List[List[int]]

:return: int

"""

N = len(grid)

ans = 0 # 總面積

for r in range(N):

for c in range(N):

if grid[r][c]: # 如果當前位置有柱體

ans += 2 # 上下底面

for nr, nc in ((r-1, c), (r+1, c), (r, c-1), (r, c+1)): # 考察四方

contact = grid[nr][nc] if 0 <= nr < N and 0 <= nc < N else 0 # 接觸面

ans += max(grid[r][c] - contact, 0) # 減去接觸面

return ans

如有疑問或建議,歡迎評論區留言~

總結

以上是生活随笔為你收集整理的python求球的表面积_892. 三维形体的表面积(Python)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。