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

LeetCode - #85 最大矩形(Top 100)

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode - #85 最大矩形(Top 100)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


LeetCode - #85 最大矩形(Top 100)

前言

本題為 LeetCode 前 100 高頻題

本題由于沒有合適答案為以往遺留問題,最近有時(shí)間將以往遺留問題一一完善。

我們社區(qū)陸續(xù)會(huì)將顧毅(Netflix 增長(zhǎng)黑客,《iOS 面試之道》作者,ACE 職業(yè)健身教練。)的 Swift 算法題題解整理為文字版以方便大家學(xué)習(xí)與閱讀。

LeetCode 算法到目前我們已經(jīng)更新到 84 期,我們會(huì)保持更新時(shí)間和進(jìn)度(周一、周三、周五早上 9:00 發(fā)布),每期的內(nèi)容不多,我們希望大家可以在上班路上閱讀,長(zhǎng)久積累會(huì)有很大提升。

不積跬步,無以至千里;不積小流,無以成江海,Swift社區(qū) 伴你前行。如果大家有建議和意見歡迎在文末留言,我們會(huì)盡力滿足大家的需求。

難度水平:困難

1. 描述

給定一個(gè)僅包含 01 、大小為 rows x cols 的二維二進(jìn)制矩陣,找出只包含 1 的最大矩形,并返回其面積。

2. 示例

示例 1

LeetCode - #85 最大矩形(Top 100)

輸入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
輸出:6
解釋:最大矩形如上圖所示。

示例 2

輸入:matrix = []
輸出:0

示例 3

輸入:matrix = [["0"]]
輸出:0

示例 4

輸入:matrix = [["1"]]
輸出:1

示例 5

輸入:matrix = [["0","0"]]
輸出:0

提示:

  • rows == matrix.length
  • cols == matrix[0].length
  • 1 <= row, cols <= 200
  • matrix[i][j]'0''1'

3. 答案

題解 1

class Solution {
   func maximalRectangle(_ matrix: [[Character]]) -> Int {
       if matrix.count == 0 || matrix[0].count == 0{
           return 0
       }
       var ans = 0
       var rowArr = Array(repeating:0,count:matrix[0].count + 1)
       for y in stride(from:0,to:matrix.count,by:1) {
           for x in stride(from:0,to:matrix[0].count,by:1) {
               if matrix[y][x] == "1" {
                   rowArr[x] += 1 
               } else {
                   rowArr[x] = 0
               }
           }
           ans = max(ans,getLargetRect(rowArr))
       }
       return ans
   }

   func getLargetRect(_ rowArr:[Int]) -> Int {
       var stack = [Int]()
       var maxArea = 0
       for (index,height) in rowArr.enumerated() {
           while let last = stack.last, rowArr[last] > height {
               stack.removeLast()
               var width = 0
               if stack.isEmpty {
                   width = index
               } else {
                   width = index - stack.last! - 1
               }
               maxArea = max(maxArea, width * rowArr[last] )
           }

           stack.append(index)
       }
       return maxArea
   }
}

題解 2

class Solution {
   func maximalRectangle(_ matrix: [[Character]]) -> Int {
       let n = matrix.count
       guard n > 0 else {
           return 0
       }
       let m = matrix[0].count

       var mark = Array(repeatElement(Array(repeatElement(0, count: m)), count: n))
       for i in (0..<n).reversed() {
           var count = 0
           for j in (0..<m).reversed() {
               if matrix[i][j] == "1" {
                   count += 1
               } else {
                   count = 0
               }
               mark[i][j] = count
           }
       }

       var result = 0
       for i in 0..<n {
           for j in 0..<m {
               var minColumn = m
               var row = i
               while row < n && mark[row][j] != 0 {
                   minColumn = min(minColumn, mark[row][j])
                   result = max(result, (row - i + 1) * minColumn)
                   row += 1
               }
           }
       }
       return result
   }
}

點(diǎn)擊前往 LeetCode 練習(xí)

關(guān)于我們

我們是由 Swift 愛好者共同維護(hù),我們會(huì)分享以 Swift 實(shí)戰(zhàn)、SwiftUI、Swift 基礎(chǔ)為核心的技術(shù)內(nèi)容,也整理收集優(yōu)秀的學(xué)習(xí)資料。文章來源地址http://www.zghlxwxcb.cn/news/detail-497809.html

到了這里,關(guān)于LeetCode - #85 最大矩形(Top 100)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【leetcode熱題100】接雨水、直方圖最大矩形面積、矩陣中最大的矩形

    【leetcode熱題100】接雨水、直方圖最大矩形面積、矩陣中最大的矩形

    題目鏈接 題目描述: 給定 n 個(gè)非負(fù)整數(shù)表示每個(gè)寬度為 1 的柱子的高度圖,計(jì)算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 輸入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 輸出:6 解釋:上面是由數(shù)組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個(gè)單位的雨水(藍(lán)

    2024年02月03日
    瀏覽(19)
  • LeetCode熱題HOT100:76. 最小覆蓋子串,84.柱狀圖中最大的矩形、96. 不同的二叉搜索樹

    LeetCode熱題HOT100:76. 最小覆蓋子串,84.柱狀圖中最大的矩形、96. 不同的二叉搜索樹

    題目 :給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 “” 。 注意: 對(duì)于 t 中重復(fù)字符,我們尋找的子字符串中該字符數(shù)量必須不少于 t 中該字符數(shù)量。 如果 s 中存在這樣的子串,我們保

    2023年04月19日
    瀏覽(31)
  • LeetCode 84. 柱狀圖中最大的矩形

    LeetCode 84. 柱狀圖中最大的矩形

    84. 柱狀圖中最大的矩形 給定?n?個(gè)非負(fù)整數(shù),用來表示柱狀圖中各個(gè)柱子的高度。每個(gè)柱子彼此相鄰,且寬度為 1 。 求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。 示例 1: 輸入: heights = [2,1,5,6,2,3] 輸出: 10 解釋: 最大的矩形為圖中紅色區(qū)域,面積為 10 示例 2: 輸入

    2024年02月03日
    瀏覽(30)
  • 【Leetcode -485.最大連續(xù)1的個(gè)數(shù) -492.構(gòu)造矩形】

    題目:給定一個(gè)二進(jìn)制數(shù)組 nums , 計(jì)算其中最大連續(xù) 1 的個(gè)數(shù)。 示例 1: 輸入:nums = [1, 1, 0, 1, 1, 1] 輸出:3 解釋:開頭的兩位和最后的三位都是連續(xù) 1 ,所以最大連續(xù) 1 的個(gè)數(shù)是 3. 示例 2: 輸入:nums = [1, 0, 1, 1, 0, 1] 輸出:2 思路是遍歷一次數(shù)組,如果是1就使用變量count累加

    2024年02月05日
    瀏覽(20)
  • 【Leetcode】top 100 圖論

    【Leetcode】top 100 圖論

    基礎(chǔ)知識(shí)補(bǔ)充 1.圖分為有向圖和無向圖,有權(quán)圖和無權(quán)圖; 2.圖的表示方法:鄰接矩陣適合表示稠密圖,鄰接表適合表示稀疏圖; ? ?鄰接矩陣: ? ?鄰接表: 基礎(chǔ)操作補(bǔ)充 1.鄰接矩陣: 2.鄰接表: 3.圖的遍歷: ?題目 200 島嶼數(shù)量 給你一個(gè)由? \\\'1\\\' (陸地)和? \\\'0\\\' (水)組

    2024年04月10日
    瀏覽(30)
  • 算法leetcode|84. 柱狀圖中最大的矩形(rust重拳出擊)

    算法leetcode|84. 柱狀圖中最大的矩形(rust重拳出擊)

    給定 n 個(gè)非負(fù)整數(shù),用來表示柱狀圖中各個(gè)柱子的高度。每個(gè)柱子彼此相鄰,且寬度為 1 。 求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。 1 = heights.length =10 5 0 = heights[i] = 10 4 面對(duì)這道算法題目,二當(dāng)家的再次陷入了沉思。 眼睛一看似乎有思路,但是一動(dòng)手就容易不知

    2024年02月08日
    瀏覽(34)
  • 【Leetcode】top 100 多維動(dòng)態(tài)規(guī)劃

    62 不同路徑 一個(gè)機(jī)器人位于一個(gè)? m x n ? 網(wǎng)格的左上角,機(jī)器人每次只能向下或者向右移動(dòng)一步,機(jī)器人試圖達(dá)到網(wǎng)格的右下角,問總共有多少條不同的路徑? 分析:dp[i][j] 代表走到 (i, j) 的路徑總和數(shù) 遞推規(guī)律:dp[i][j] = dp[i-1][j] + dp[i][j-1] 初始條件:dp[0][:] = 1 dp[:][0] =?1

    2024年03月26日
    瀏覽(33)
  • Leetcode Top 100 Liked Questions(序號(hào)105~139)

    Leetcode Top 100 Liked Questions(序號(hào)105~139)

    題意:根據(jù)前序遍歷和中序遍歷來構(gòu)造二叉樹 要用遞歸造樹,要同時(shí)遞歸左子樹和右子樹,造樹需要左邊邊界和右邊邊界 build函數(shù)有 樹的跟指針, 前序的有左邊邊界和右邊邊界,中序的左邊邊界和右邊邊界 如果lr return; 因?yàn)槭窍刃虮闅v,所以左子樹是先序的第一個(gè),先構(gòu)

    2024年02月10日
    瀏覽(16)
  • Leetcode Top 100 Liked Questions(序號(hào)53~74)

    Leetcode Top 100 Liked Questions(序號(hào)53~74)

    題意:一個(gè)數(shù)組,找到和最大的子串 我記得好像On的動(dòng)態(tài)規(guī)劃來做的?但是想不起來了,先死做,用的 前綴和——TLE超時(shí) 那就只能想想dp怎么做了 假設(shè)dp[i]表示的是以 i 為右端點(diǎn)的最大的子串,dp[0]是自己; i=1時(shí),如果dp[0]小于0,dp[1]=nums[1],否則dp[1]=dp[0]+nums[1] i=2時(shí),如果

    2024年02月12日
    瀏覽(18)
  • Leetcode Top 100 Liked Questions(序號(hào)75~104)

    Leetcode Top 100 Liked Questions(序號(hào)75~104)

    ?題意:紅白藍(lán)的顏色排序,使得相同的顏色放在一起,不要用排序 哈希 代碼?Runtime 4 ms Beats 28.23% Memory 8.3 MB Beats 9.95% Dutch National Flag Problem荷蘭國(guó)旗問題; 代碼 計(jì)數(shù)排序?Runtime 0 ms Beats 100% Memory 8.3 MB Beats 41.44% 感覺和我之前做的差不多 代碼 雙指針 Runtime 0 ms Beats 100% Memory

    2024年02月10日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包