国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode 892. Surface Area of 3D Shapes【數(shù)組,數(shù)學(xué)】簡單

這篇具有很好參考價值的文章主要介紹了LeetCode 892. Surface Area of 3D Shapes【數(shù)組,數(shù)學(xué)】簡單。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文屬于「征服LeetCode」系列文章之一,這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖,本系列將至少持續(xù)到刷完所有無鎖題之日為止;由于LeetCode還在不斷地創(chuàng)建新題,本系列的終止日期可能是永遠(yuǎn)。在這一系列刷題文章中,我不僅會講解多種解題思路及其優(yōu)化,還會用多種編程語言實現(xiàn)題解,涉及到通用解法時更將歸納總結(jié)出相應(yīng)的算法模板。

為了方便在PC上運行調(diào)試、分享代碼文件,我還建立了相關(guān)的倉庫:https://github.com/memcpy0/LeetCode-Conquest。在這一倉庫中,你不僅可以看到LeetCode原題鏈接、題解代碼、題解文章鏈接、同類題目歸納、通用解法總結(jié)等,還可以看到原題出現(xiàn)頻率和相關(guān)企業(yè)等重要信息。如果有其他優(yōu)選題解,還可以一同分享給他人。

由于本系列文章的內(nèi)容隨時可能發(fā)生更新變動,歡迎關(guān)注和收藏征服LeetCode系列文章目錄一文以作備忘。

給你一個?n * n?的網(wǎng)格?grid?,上面放置著一些?1 x 1 x 1?的正方體。每個值?v = grid[i][j]?表示?v?個正方體疊放在對應(yīng)單元格?(i, j)?上。

放置好正方體后,任何直接相鄰的正方體都會互相粘在一起,形成一些不規(guī)則的三維形體。

請你返回最終這些形體的總表面積。

注意: 每個形體的底面也需要計入表面積中。

示例 1:
LeetCode 892. Surface Area of 3D Shapes【數(shù)組,數(shù)學(xué)】簡單

輸入:grid = [[1,2],[3,4]]
輸出:34

示例 2:
LeetCode 892. Surface Area of 3D Shapes【數(shù)組,數(shù)學(xué)】簡單

輸入:grid = [[1,1,1],[1,0,1],[1,1,1]]
輸出:32

示例 3:
LeetCode 892. Surface Area of 3D Shapes【數(shù)組,數(shù)學(xué)】簡單

輸入:grid = [[2,2,2],[2,1,2],[2,2,2]]
輸出:46

提示:

  • n == grid.length
  • n == grid[i].length
  • 1 <= n <= 50
  • 0 <= grid[i][j] <= 50

這一題和HDU 5538類似,也和LeetCode 463. Island Perimeter完全相同。

解法 直接遍歷+容斥原理

本題求的是疊方塊的表面積,每個位置上的立方體(疊放的多個正方體)沒有和周邊立方體重疊時,本身表面積為 6 × h ? ( h ? 1 ) × 2 6 \times h - (h - 1) \times 2 6×h?(h?1)×2每個正方體貢獻(xiàn)了 6 6 6 個表面積、再減去多個正方體重疊的面)。簡化一下就是 4 × h + 2 4\times h+2 4×h+2考慮上底和下底面,以及每個正方體貢獻(xiàn)的 4 4 4 個側(cè)表面)。

再通過從左上到右下遍歷,判斷下方和右邊是否有重疊的立方體,如果有重疊,計算當(dāng)前立方體的表面積時,要減去 2 × min ? ( g r i d [ i + 1 ] [ j ] , ? g r i d [ i ] [ j ] ) 2\times \min {(grid[i+1][j],\ grid[i][j])} 2×min(grid[i+1][j],?grid[i][j]) (下方有重疊), 2 × min ? ( g r i d [ i ] [ j + 1 ] , ? g r i d [ i ] [ j ] ) 2\times \min{}{(grid[i][j+1],\ grid[i][j])} 2×min(grid[i][j+1],?grid[i][j]) (右側(cè)有重疊),即可得到最終結(jié)果。

class Solution {
    public int surfaceArea(int[][] grid) {
        int ans = 0;
        int n = grid.length, m = grid[0].length;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                if (grid[i][j] == 0) continue;
                // ans += grid[i][j] * 6 - (grid[i][j] - 1) * 2;
                ans += (grid[i][j] << 2) + 2;
                if (i + 1 < n && grid[i + 1][j] != 0) // 右邊
                    ans -= Math.min(grid[i][j], grid[i + 1][j]) << 1;
                if (j + 1 < m && grid[i][j + 1] != 0) // 下邊
                    ans -= Math.min(grid[i][j], grid[i][j + 1]) << 1;
            }
        }
        return ans;
    }
}

復(fù)雜度分析:

  • 時間復(fù)雜度: O ( m n ) O(mn) O(mn)
  • 空間復(fù)雜度: O ( 1 ) O(1) O(1)

似乎還可稍作優(yōu)化。上面的代碼在循環(huán)中做了太多次乘法/移位操作,可將這些操作放到最后進(jìn)行。
作為改進(jìn),整體思路是看看有多少個立方體,總表面積是立方體的數(shù)量 × 6 × 6 ×6 ,但上下疊放的正方體、和相鄰的立方體會互相遮蓋住,統(tǒng)計一下被蓋住的面,最后減去被蓋住的面就行:

class Solution {
    public int surfaceArea(int[][] grid) {
        int blocks = 0, cover = 0; // 正方體的個數(shù),蓋住的面的個數(shù)
        int n = grid.length, m = grid[0].length;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                if (grid[i][j] == 0) continue; 
                blocks += grid[i][j];
                cover += grid[i][j] - 1;
                if (i + 1 < n && grid[i + 1][j] != 0) // 右邊
                    cover += Math.min(grid[i][j], grid[i + 1][j]);
                if (j + 1 < m && grid[i][j + 1] != 0) // 下邊
                    cover += Math.min(grid[i][j], grid[i][j + 1]);
            }
        }
        return blocks * 6 - cover * 2;
    }
}

復(fù)雜度分析:文章來源地址http://www.zghlxwxcb.cn/news/detail-495786.html

  • 時間復(fù)雜度: O ( m n ) O(mn) O(mn)
  • 空間復(fù)雜度: O ( 1 ) O(1) O(1)

到了這里,關(guān)于LeetCode 892. Surface Area of 3D Shapes【數(shù)組,數(shù)學(xué)】簡單的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Neural Geometric Level of Detail: Real-time Rendering with Implicit 3D Shapes 論文筆記&環(huán)境配置

    Neural Geometric Level of Detail: Real-time Rendering with Implicit 3D Shapes 論文筆記&環(huán)境配置

    發(fā)布于 CVPR 2021 論文介紹了一種具有神經(jīng)SDF的復(fù)雜幾何實時渲染方法。 論文提出了一種神經(jīng)SDF表示,可以有效地捕獲多個LOD,并以最先進(jìn)的質(zhì)量重建3D幾何圖形。 論文中的架構(gòu)可以以比傳統(tǒng)方法具有更高視覺保真度的壓縮格式表示 3D 形狀,并且即使在單個學(xué)習(xí)示例中也能跨不

    2024年01月24日
    瀏覽(41)
  • LeetCode-48. 旋轉(zhuǎn)圖像【數(shù)組 數(shù)學(xué) 矩陣】

    LeetCode-48. 旋轉(zhuǎn)圖像【數(shù)組 數(shù)學(xué) 矩陣】

    給定一個 n × n 的二維矩陣 matrix 表示一個圖像。請你將圖像順時針旋轉(zhuǎn) 90 度。 你必須在 原地 旋轉(zhuǎn)圖像,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉(zhuǎn)圖像。 示例 1: 輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出:[[7,4,1],[8,5,2],[9,6,3]] 示例 2: 輸入:m

    2024年04月27日
    瀏覽(24)
  • CGAL的3D Alpha Shapes

    CGAL的3D Alpha Shapes

    ????????假設(shè)我們給定一個二維或三維的點集S,我們希望得到類似“這些點形成的形狀”的東西。這是一個相當(dāng)模糊的概念,可能有許多可能的解釋,阿爾法形狀就是其中之一。阿爾法形狀可用于從密集的無組織數(shù)據(jù)點集進(jìn)行形狀重建。事實上,阿爾法形狀是由一個邊界

    2024年02月01日
    瀏覽(17)
  • Leetcode—1480.一維數(shù)組的動態(tài)和【簡單】

    Leetcode—1480.一維數(shù)組的動態(tài)和【簡單】

    之后我會持續(xù)更新,如果喜歡我的文章,請記得一鍵三連哦,點贊關(guān)注收藏,你的每一個贊每一份關(guān)注每一次收藏都將是我前進(jìn)路上的無限動力 !?。〃I(▔▽▔)↗感謝支持!

    2024年02月04日
    瀏覽(18)
  • 3D Surface Subdivision Methods 3D 曲面細(xì)分方法

    3D Surface Subdivision Methods 3D 曲面細(xì)分方法

    原文地址: https://doc.cgal.org/latest/Subdivision_method_3/index.html#Chapter_3D_Surface_Subdivision_Methods 細(xì)分方法遞歸地細(xì)化控制網(wǎng)格并生成逼近極限表面的點。 該包由四種流行的細(xì)分方法及其細(xì)化主機組成。 支持的細(xì)分方法包括 Catmull-Clark、Loop、Doo-Sabin 和 √3 細(xì)分。 它們各自的細(xì)化宿主是

    2024年01月19日
    瀏覽(22)
  • LeetCode150道面試經(jīng)典題-合并兩個有序數(shù)組(簡單)

    LeetCode150道面試經(jīng)典題-合并兩個有序數(shù)組(簡單)

    題目: 給你兩個按 非遞減順序 排列的整數(shù)數(shù)組? nums1 和 nums2 ,另有兩個整數(shù) m 和 n ,分別表示 nums1 和 nums2 中的元素數(shù)目。 請你 合并 nums2 到 nums1 中,使合并后的數(shù)組同樣按 非遞減順序 排列。 注意: 最終,合并后數(shù)組不應(yīng)由函數(shù)返回,而是存儲在數(shù)組 nums1 中。為了應(yīng)對

    2024年02月14日
    瀏覽(19)
  • 【三】3D匹配Matching之可變形曲面匹配Deformable Surface—refine_deformable_surface_model()算子

    ?????? 歡迎來到本博客 ?????? ?????? Halcon算子太多,學(xué)習(xí)查找都沒有系統(tǒng)的學(xué)習(xí)查找路徑,本專欄主要分享Halcon各類算子含義及用法,有時間會更新具體案例。 ?????? 具體食用方式:可以點擊本專欄【Halcon算子快速查找】–搜索你要查詢的算子名稱;或者點擊

    2024年02月11日
    瀏覽(15)
  • 【三】3D匹配Matching之可變形曲面匹配Deformable Surface—read_deformable_surface_model()算子

    ?????? 歡迎來到本博客 ?????? ?????? Halcon算子太多,學(xué)習(xí)查找都沒有系統(tǒng)的學(xué)習(xí)查找路徑,本專欄主要分享Halcon各類算子含義及用法,有時間會更新具體案例。 ?????? 具體食用方式:可以點擊本專欄【Halcon算子快速查找】–搜索你要查詢的算子名稱;或者點擊

    2024年02月14日
    瀏覽(14)
  • Open3D Surface reconstruction 表面重建

    在許多情況下,我們希望生成密集的3D幾何體,即三角形網(wǎng)格(triangle mesh)。然而,從多視點立體方法或深度傳感器中,我們只能獲得非結(jié)構(gòu)化的點云。要從此非結(jié)構(gòu)化輸入中獲取三角形網(wǎng)格,我們需要執(zhí)行表面重建。在文獻(xiàn)中存在幾種方法,Open3D目前實現(xiàn)了以下方法: Alpha

    2023年04月27日
    瀏覽(15)
  • BtcDet論文詳解| Behind the Curtain: Learning Occluded Shapes for 3D Object Detection

    BtcDet論文詳解| Behind the Curtain: Learning Occluded Shapes for 3D Object Detection

    造成shape miss主要由三個原因: 外部遮擋。前方物體擋住了后面的物體,使得傳感器難以感知到后面的物體。 信號丟失。由于目標(biāo)的材質(zhì)或者傳感器的原因,一部分傳感器信號丟失,使得傳感器難以感知這個區(qū)域 自身遮擋。物體自身的靠近傳感器的部分遮擋住了遠(yuǎn)離傳感器的

    2024年02月03日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包