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

【LeetCode每日一題】——85.最大矩形

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

一【題目類(lèi)別】

  • 矩陣

二【題目難度】

  • 困難

三【題目編號(hào)】

  • 85.最大矩形

四【題目描述】

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

五【題目示例】

  • 示例 1:

    • 【LeetCode每日一題】——85.最大矩形,LeetCode,算法,數(shù)據(jù)結(jié)構(gòu),矩陣,LeetCode,85.最大矩形
    • 輸入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]
    • 輸出:6
    • 解釋?zhuān)鹤畲缶匦稳缟蠄D所示。
  • 示例 2:

    • 輸入:matrix = []
    • 輸出:0
  • 示例 3:

    • 輸入:matrix = [[“0”]]
    • 輸出:0
  • 示例 4:

    • 輸入:matrix = [[“1”]]
    • 輸出:1
  • 示例 5:

    • 輸入:matrix = [[“0”,“0”]]
    • 輸出:0

六【題目提示】

  • r o w s = = m a t r i x . l e n g t h rows == matrix.length rows==matrix.length
  • c o l s = = m a t r i x [ 0 ] . l e n g t h cols == matrix[0].length cols==matrix[0].length
  • 1 < = r o w , c o l s < = 200 1 <= row, cols <= 200 1<=row,cols<=200
  • m a t r i x [ i ] [ j ] 為 ′ 0 ′ 或 ′ 1 ′ matrix[i][j] 為 '0' 或 '1' matrix[i][j]01

七【解題思路】

  • 首先創(chuàng)建一個(gè)輔助數(shù)組left,用于記錄每個(gè)位置的左邊連續(xù) ‘1’ 的個(gè)數(shù)
  • 然后對(duì)于二維數(shù)組中每一個(gè)點(diǎn),我們計(jì)算以這個(gè)點(diǎn)作為右下角的矩形的面積,我們利用“向上拓展”的方式,矩陣的寬度是“向上拓展”的過(guò)程中最短的寬度,高度通過(guò)當(dāng)前位置減去遍歷到的位置然后加一得到(因?yàn)閿?shù)組從零開(kāi)始計(jì)數(shù))
  • 然后通過(guò)比較最大值得到最大矩形的面積
  • 最后返回結(jié)果即可

八【時(shí)間頻度】

  • 時(shí)間復(fù)雜度: O ( m 2 n ) O(m^2n) O(m2n), m 、 n m、n mn分別為傳入的二維數(shù)組的行數(shù)和列數(shù)
  • 空間復(fù)雜度: O ( m n ) O(mn) O(mn), m 、 n m、n mn分別為傳入的二維數(shù)組的行數(shù)和列數(shù)

九【代碼實(shí)現(xiàn)】

  1. Java語(yǔ)言版
class Solution {
    public int maximalRectangle(char[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        int[][] left = new int[m][n];
        for(int i = 0;i < m;i++){
            for(int j = 0;j < n;j++){
                if(matrix[i][j] == '1'){
                    left[i][j] = (j == 0 ? 0 : left[i][j - 1]) + 1;
                }
            }
        }
        int res = 0;
        for(int i = 0;i < m;i++){
            for(int j = 0;j < n;j++){
                if(matrix[i][j] == '0'){
                    continue;
                }
                int width = left[i][j];
                int area = width;
                for(int k = i - 1;k >= 0;k--){
                    width = Math.min(width, left[k][j]);
                    area = Math.max(area,(i - k + 1) * width);
                }
                res = Math.max(res, area);
            }
        }
        return res;
    }
}
  1. C語(yǔ)言版
int maximalRectangle(char** matrix, int matrixSize, int* matrixColSize)
{
    int m = matrixSize;
    int n = matrixColSize[0];
    int** left = (int **)malloc(sizeof(int*) * m);
    for(int i = 0;i < m;i++)
    {
        left[i] = (int*)calloc(n, sizeof(int));
    }
    for(int i = 0;i < m;i++)
    {
        for(int j = 0;j < n;j++)
        {
            if(matrix[i][j] == '1')
            {
                left[i][j] = (j == 0 ? 0 : left[i][j - 1]) + 1;
            }
        }
    }
    int res = 0;
    for(int i = 0;i < m;i++)
    {
        for(int j = 0;j < n;j++)
        {
            if(matrix[i][j] == '0')
            {
                continue;
            }
            int width = left[i][j];
            int area = width;
            for(int k = i - 1;k >= 0;k--)
            {
                width = fmin(width, left[k][j]);
                area = fmax(area, (i - k + 1) * width);
            }
            res = fmax(res, area);
        }
    }
    return res;
}
  1. Python語(yǔ)言版
class Solution:
    def maximalRectangle(self, matrix: List[List[str]]) -> int:
        m = len(matrix)
        n = len(matrix[0])
        left = [[0 for _ in range(n)] for _ in range (m)]
        for i in range(0, m):
            for j in range(0, n):
                if matrix[i][j] == '1':
                    left[i][j] = (0 if j == 0 else left[i][j - 1]) + 1
        res = 0
        for i in range(0, m):
            for j in range(0, n):
                if matrix[i][j] == '0':
                    continue
                width = left[i][j]
                area = width
                for k in range(i - 1, -1, -1):
                    width = min(width, left[k][j])
                    area = max(area, (i - k + 1) * width)
                res = max(res, area)
        return res
  1. C++語(yǔ)言版
class Solution {
public:
    int maximalRectangle(vector<vector<char>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        vector<vector<int>> left(m, vector<int>(n, 0));
        for(int i = 0;i < m;i++){
            for(int j = 0;j < n;j++){
                if(matrix[i][j] == '1'){
                    left[i][j] = (j == 0 ? 0 : left[i][j - 1]) + 1;
                }
            }
        }
        int res = 0;
        for(int i = 0;i < m;i++){
            for(int j = 0;j < n;j++){
                if(matrix[i][j] == '0'){
                    continue;
                }
                int width = left[i][j];
                int area = width;
                for(int k = i - 1;k >= 0;k--){
                    width = fmin(width, left[k][j]);
                    area = fmax(area, (i - k + 1) * width);
                }
                res = fmax(res, area);
            }
        }
        return res;
    }
};

十【提交結(jié)果】

  1. Java語(yǔ)言版
    【LeetCode每日一題】——85.最大矩形,LeetCode,算法,數(shù)據(jù)結(jié)構(gòu),矩陣,LeetCode,85.最大矩形

  2. C語(yǔ)言版
    【LeetCode每日一題】——85.最大矩形,LeetCode,算法,數(shù)據(jù)結(jié)構(gòu),矩陣,LeetCode,85.最大矩形

  3. Python語(yǔ)言版
    【LeetCode每日一題】——85.最大矩形,LeetCode,算法,數(shù)據(jù)結(jié)構(gòu),矩陣,LeetCode,85.最大矩形

  4. C++語(yǔ)言版
    【LeetCode每日一題】——85.最大矩形,LeetCode,算法,數(shù)據(jù)結(jié)構(gòu),矩陣,LeetCode,85.最大矩形文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-640750.html

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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)文章

  • 每日一題——LeetCode1189.氣球的最大數(shù)量

    每日一題——LeetCode1189.氣球的最大數(shù)量

    方法一 個(gè)人方法: 統(tǒng)計(jì)text字符串中\(zhòng)\\'b\\\'、\\\'a\\\'、\\\'l\\\'、\\\'o\\\'、\\\'n\\\'?這幾個(gè)字符出現(xiàn)的次數(shù) l和n需要兩個(gè)才能拼成一個(gè)balloon,所以碰到l和o加1,其他字符加2 最后求出出現(xiàn)次數(shù)最少的那個(gè)字符再除以2就是能拼湊成的單詞數(shù)量,避免出現(xiàn)小數(shù)要使用向下取整 消耗時(shí)間和內(nèi)存情況: 方法

    2024年02月01日
    瀏覽(40)
  • 【LeetCode每日一題】53. 最大子數(shù)組和

    https://leetcode.cn/problems/maximum-subarray/description/ 給你一個(gè)整數(shù)數(shù)組 nums ,請(qǐng)你找出一個(gè)具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個(gè)元素),返回其最大和。 子數(shù)組 是數(shù)組中的一個(gè)連續(xù)部分。 先算出數(shù)組的前綴和,然后通過(guò)2個(gè)for循環(huán)遍歷出所有的連續(xù)子數(shù)組。 尋找一個(gè)具有

    2024年02月04日
    瀏覽(25)
  • 【LeetCode每日一題】410. 分割數(shù)組的最大值

    【LeetCode每日一題】410. 分割數(shù)組的最大值

    2024-1-21 410. 分割數(shù)組的最大值 思路:二分查找+貪心 利用二分查找法和貪心算法來(lái)求解將數(shù)組分割為m個(gè)非空連續(xù)子數(shù)組,使得每個(gè)子數(shù)組的和的最大值最小 首先,我們需要確定二分查找的左右邊界。左邊界 left 初始化為數(shù)組中的最大值,右邊界 right 初始化為數(shù)組所有元素的

    2024年01月23日
    瀏覽(25)
  • 二叉樹(shù)(下)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“對(duì)稱(chēng)二叉樹(shù)”“另一棵樹(shù)的子樹(shù)”“二叉樹(shù)的前中后序遍歷”

    二叉樹(shù)(下)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“對(duì)稱(chēng)二叉樹(shù)”“另一棵樹(shù)的子樹(shù)”“二叉樹(shù)的前中后序遍歷”

    各位CSDN的uu們你們好呀,今天小雅蘭的內(nèi)容仍然是二叉樹(shù)和Leetcode每日一題,下面,就讓我們進(jìn)入二叉樹(shù)的世界吧?。?! 這個(gè)題目需要重新定義一個(gè)函數(shù),函數(shù)參數(shù)需要有左子樹(shù)和右子樹(shù),題目所給定的函數(shù)無(wú)法解決問(wèn)題。 每個(gè)不為空的結(jié)點(diǎn),都可以認(rèn)為是一棵子樹(shù)的根?

    2024年02月16日
    瀏覽(29)
  • LeetCode每日一題——1691. 堆疊長(zhǎng)方體的最大高度

    LeetCode每日一題——1691. 堆疊長(zhǎng)方體的最大高度

    題目: 828. 統(tǒng)計(jì)子串中的唯一字符 難度: 困難 給你 n 個(gè)長(zhǎng)方體 cuboids ,其中第 i 個(gè)長(zhǎng)方體的長(zhǎng)寬高表示為 cuboids[i] = [widthi, lengthi, heighti](下標(biāo)從 0 開(kāi)始)。請(qǐng)你從 cuboids 選出一個(gè) 子集 ,并將它們堆疊起來(lái)。 如果 widthi = widthj 且 lengthi = lengthj 且 heighti = heightj ,你就可以將

    2024年02月10日
    瀏覽(26)
  • 【Leetcode】【每日一題】【中等】1465. 切割后面積最大的蛋糕

    【Leetcode】【每日一題】【中等】1465. 切割后面積最大的蛋糕

    力扣(LeetCode)官網(wǎng) - 全球極客摯愛(ài)的技術(shù)成長(zhǎng)平臺(tái) 備戰(zhàn)技術(shù)面試?力扣提供海量技術(shù)面試資源,幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。 https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/description/?envType=daily-questionenvId=2023-10-27 矩形

    2024年02月07日
    瀏覽(21)
  • 二叉樹(shù)(中)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“劍指Offer55-I. 二叉樹(shù)的深度”“100.相同的樹(shù)”“965.單值二叉樹(shù)”

    二叉樹(shù)(中)+Leetcode每日一題——“數(shù)據(jù)結(jié)構(gòu)與算法”“劍指Offer55-I. 二叉樹(shù)的深度”“100.相同的樹(shù)”“965.單值二叉樹(shù)”

    各位CSDN的uu們你們好呀,今天繼續(xù)數(shù)據(jù)結(jié)構(gòu)與算法專(zhuān)欄中的二叉樹(shù),下面,讓我們進(jìn)入二叉樹(shù)的世界吧?。。?二叉樹(shù)(上)——“數(shù)據(jù)結(jié)構(gòu)與算法”_認(rèn)真學(xué)習(xí)的小雅蘭.的博客-CSDN博客 二叉樹(shù)鏈?zhǔn)浇Y(jié)構(gòu)的實(shí)現(xiàn) 二叉樹(shù)鏈?zhǔn)浇Y(jié)構(gòu)的實(shí)現(xiàn) 求二叉樹(shù)的高度 但是這種寫(xiě)法有很大的問(wèn)題

    2024年02月17日
    瀏覽(32)
  • LeetCode每日一題——813. 最大平均值和的分組

    LeetCode每日一題——813. 最大平均值和的分組

    題目: 813. 最大平均值和的分組 難度: 普通 給定數(shù)組 nums 和一個(gè)整數(shù) k 。我們將給定的數(shù)組 nums 分成 最多 k 個(gè)相鄰的非空子數(shù)組 。 分?jǐn)?shù) 由每個(gè)子數(shù)組內(nèi)的平均值的總和構(gòu)成。 注意我們必須使用 nums 數(shù)組中的每一個(gè)數(shù)進(jìn)行分組,并且分?jǐn)?shù)不一定需要是整數(shù)。 返回我們所能

    2024年02月13日
    瀏覽(31)
  • 每日一題——LeetCode1299.將每個(gè)元素替換為右側(cè)最大元素

    每日一題——LeetCode1299.將每個(gè)元素替換為右側(cè)最大元素

    方法一 個(gè)人方法: ?題目意思就是求在i=1;i++的循環(huán)條件下,arr[i]-arr[arr.length-1]的最大值分別為多少,最后一項(xiàng)默認(rèn)為-1 用slice方法可以每次把數(shù)組第一位去除,得到求最大值的目標(biāo)數(shù)組 Math的max方法可以直接返回?cái)?shù)組里的最大值 但是不能每次循環(huán)都求一遍目標(biāo)數(shù)組的最大值,

    2024年01月23日
    瀏覽(22)
  • ( 數(shù)組和矩陣) 485. 最大連續(xù) 1 的個(gè)數(shù) ——【Leetcode每日一題】

    ( 數(shù)組和矩陣) 485. 最大連續(xù) 1 的個(gè)數(shù) ——【Leetcode每日一題】

    難度:簡(jiǎn)單 給定一個(gè)二進(jìn)制數(shù)組 nums , 計(jì)算其中最大連續(xù) 1 的個(gè)數(shù)。 示例 1: 輸入:nums = [1,1,0,1,1,1] 輸出:3 解釋?zhuān)洪_(kāi)頭的兩位和最后的三位都是連續(xù) 1 ,所以最大連續(xù) 1 的個(gè)數(shù)是 3. 示例 2: 輸入:nums = [1,0,1,1,0,1] 輸出:2 提示: 1 = n u m s . l e n g t h = 1 0 5 1 = nums.length = 10^5

    2024年02月08日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包