表面積=頂面積+底面積+側面積
只要單元格內有正方體,它就貢獻出底面+表面
即v>0,等於表面積+2
側面積用v跟相鄰單元格的v比較,若v>相鄰單元格v2,則側面積+v-v2,反之+0
單元格grid[i][j]的相鄰單元格為grid[i-1][j],grid[i+1][j],grid[i][j+1],grid[i][j-1],
如果算出的單元格溢位三維體的邊界,將它的值看為0,判斷條件為0<=i±1class
solution
:def
su***cearea
(self, grid: list[list[
int]])
->
int:
s =0 l =
len(grid)
for i in
range
(l):
for j in
range
(l):
v = grid[i]
[j]if v >0:
s +=
2for m,n in
((i+
1,j)
,(i-
1,j)
,(i,j+1)
,(i,j-1)
):if0
<=m
0<=n
v2 = grid[m]
[n]else
: v2 =
0 s +=
max(v-v2,0)
return s先計算每個單元格內的三維柱體的表面積,相加得出s
總s_總
s總計算出重合的側面面積s
側s_側
s側相減即是三維柱體表面積
class
solution
:def
su***cearea
(self, grid: list[list[
int]])
->
int:
s1 =
0#總面積
s2 =
0#重合面積
l =len(grid)
for i in
range
(l):
for j in
range
(l):
v = grid[i]
[j]if v==0:
s =0else
: s =2+
4*vs1 += s
if i+
1v2 = grid[i+1]
[j] s =
min(v,v2)
s2 += s*
2if j+
1v2 = grid[i]
[j+1
] s =
min(v,v2)
s2 += s*
2return s1-s2
LeetCode892 三維形體的表面積
題目描述 在 n n 的網格上,我們放置一些 1 1 1 的立方體。每個值 v grid i j 表示 v 個正方體疊放在對應單元格 i,j 上。請你返回最終形體的表面積。示例 1 輸入 2 輸出 10 示例 2 輸入 1,2 3,4 輸出 34 示例 3 輸入 1,0 0,2 輸出 16 示例 4...
LeetCode 892 三維形體的表面積
892.三維形體的表面積 在 n n 的網格上,我們放置一些 1 1 1 的立方體。每個值 v grid i j 表示 v 個正方體疊放在對應單元格 i,j 上。請你返回最終形體的表面積。示例 1 輸入 2 輸出 10 示例 2 輸入 1,2 3,4 輸出 34 示例 3 輸入 1,0 0,2 輸出...
LeetCode892 三維形體的表面積c
在n n的網格上,我們放置一些1 1 1的立方體。每個值v grid i j 表示v個正方體疊放在單元格 i,j 上。返回結果形體的總表面積。示例 1 輸入 2 輸出 10示例 2 輸入 1,2 3,4 輸出 34示例 3 輸入 1,0 0,2 輸出 16示例 4 輸入 1,1,1 1,0,1 1,...