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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode:892. 三维形体的表面积

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode:892. 三维形体的表面积 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

892. 三維形體的表面積

  • 題目:
  • 解題思路:
  • 源碼:
  • 踩坑點(diǎn):

題目:

解題思路:

我們先來(lái)理解一下題意:

[[1,2],[3,4]]就是一個(gè)二維數(shù)組A。A[i][j]表示每一個(gè)以單位正方形為底的空間上正方體的個(gè)數(shù)。
[[1,2],[3,4]]的意思就是假如我們把底面看作四個(gè)單位正方形,1、2、3、4就表示每個(gè)正方形上有正方體的個(gè)數(shù)。如下圖,第一個(gè)正方形上有一個(gè)正方體;第二個(gè)正方形上有二個(gè)正方體;第三個(gè)正方形上有三個(gè)正方體;第四個(gè)正方形上有四個(gè)正方體。


解題方法:

我們可以對(duì)這樣的一個(gè)二位數(shù)組進(jìn)行遍歷,因?yàn)橄噜彽拿娌荒芩阍诒砻娣e中,所以解題的方法有倆種:
1、累減法:先將所有的面算出來(lái),不考慮相鄰不相鄰,例如一個(gè)8個(gè)正方形,那么一共就有8*6=48個(gè)面;然后判斷有沒(méi)有相鄰,如果相鄰,那么就減去較小高度×2;這樣就會(huì)把相鄰的面去掉,得到最終結(jié)果
2、累加法:初始便面積為0,然后判斷每一個(gè)正方體除去相鄰面后剩下的面,最后相加

源碼:

//累減法 int surfaceArea(int** grid, int gridSize, int* gridColSize){int i,j;int area = 0;int row = gridSize;int col = *gridColSize;for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (grid[i][j] > 0) area += (grid[i][j] * 4 + 2);}}for(i=0;i<row;i++){for(j=0;j<col;j++){if(j+1 < col && grid[i][j] >= grid[i][j+1])area = area - grid[i][j+1] * 2;if(j+1 < col && grid[i][j] < grid[i][j+1])area = area - grid[i][j] * 2;if(i+1 < gridSize && grid[i][j] >= grid[i+1][j])area = area - grid[i+1][j] * 2;if(i+1 < gridSize && grid[i][j] < grid[i+1][j])area = area - grid[i][j] * 2;}}return area; }

踩坑點(diǎn):

1、因?yàn)橐袛嗍欠裣噜?#xff0c;所以會(huì)有i,j的鄰接值的判斷;我的解題方法只判斷右側(cè)和下側(cè),所以最后一列的右側(cè)肯定不用判斷,因?yàn)樽詈笠涣械挠覀?cè)沒(méi)有東西了;最后一行的下側(cè)也不用判斷,因?yàn)樽詈笠恍械南聜?cè)也沒(méi)有東西了,所以有了代碼中的i,j臨界值的判斷。
2、代碼中的col和row的定義也沒(méi)有必要,因?yàn)榭偸钦叫?#xff0c;col=row=gridSize,所以可以統(tǒng)一用gridSize代替。

總結(jié)

以上是生活随笔為你收集整理的LeetCode:892. 三维形体的表面积的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。