• leetcode-85-最大矩形

    题目描述:

    方法一:动态规划+使用柱状图的优化暴力方法 O(N*2M) O(NM) N为行数

    class Solution:
        def maximalRectangle(self, matrix: List[List[str]]) -> int:
            maxarea = 0
    
            dp = [[0] * len(matrix[0]) for _ in range(len(matrix))]
            for i in range(len(matrix)):
                for j in range(len(matrix[0])):
                    if matrix[i][j] == 0: continue
    
                    # compute the maximum width and update dp with it
                    width = dp[i][j] = dp[i][j-1] + 1 if j else 1
    
                    # compute the maximum area rectangle with a lower right corner at [i, j]
                    for k in range(i, -1, -1):
                        width = min(width, dp[k][j])
                        maxarea = max(maxarea, width * (i-k+1))
            return maxarea

    方法二:栈 参考84题 O(NM) O(M)

    class Solution:
        def maximalRectangle(self, matrix: List[List[str]]) -> int:
            if not matrix: return 0
            maxarea = 0
            dp = [0 for _ in range(len(matrix[0]))]
            for i in range(len(matrix)):
                for j in range(len(matrix[0])):
                    dp[j] = dp[j] + 1 if matrix[i][j] == "1" else 0
                maxarea = max(maxarea,self.largestRectangleArea(dp))
            return maxarea
    
        def largestRectangleArea(self, heights: List[int]) -> int:
            stack = [0]
            heights = [0] + heights + [0]
            res = 0
            for i in range(len(heights)):
                while heights[stack[-1]] > heights[i]:
                    tmp = stack.pop()
                    res = max(res, (i - stack[-1] - 1) * heights[tmp])
                stack.append(i)
            return res

    方法三:动态规划  O(NM)

    class Solution:
        def maximalRectangle(self, matrix: List[List[str]]) -> int:
            if not matrix or not matrix[0]: return 0
            row = len(matrix)
            col = len(matrix[0])
            left_j = [-1] * col
            right_j = [col] * col
            height_j = [0] * col
            res = 0
            for i in range(row):
                cur_left = -1
                cur_right = col
    
                for j in range(col):
                    if matrix[i][j] == "1":
                        height_j[j] += 1
                    else:
                        height_j[j] = 0
    
                for j in range(col):
                    if matrix[i][j] == "1":
                        left_j[j] = max(left_j[j], cur_left)
                    else:
                        left_j[j] = -1
                        cur_left = j
    
                for j in range(col - 1, -1, -1):
                    if matrix[i][j] == "1":
                        right_j[j] = min(right_j[j], cur_right)
                    else:
                        right_j[j] = col
                        cur_right = j
                for j in range(col):
                    res = max(res, (right_j[j] - left_j[j] - 1) * height_j[j])
            return res
    相关文章
    相关标签/搜索
    一,肖一码′期期准2019年香港马会开码结果直播 开奖结果现场历史记录资料查询香港开马开奖现场直播网香港2019开奖结果 大埔县| 印江| 遵义市| 大庆市| 河津市| 龙里县| 邵武市| 锦州市| 大姚县| 苗栗县| 馆陶县| 齐河县| 定南县| 色达县| 鄢陵县| 安阳市| 县级市| 岱山县| 正安县| 锦屏县| 融水| 承德县| 邵阳市| 石泉县| 伽师县| 静海县| 吕梁市| 西青区| 堆龙德庆县| 浙江省| 新源县| 荣昌县| 西华县| 长岛县| 常州市| 台东县| 文成县| 贞丰县| 阜平县| 新巴尔虎左旗| 遂川县| 乐安县| 开原市| 海宁市| 庆云县| 南京市| 鄯善县| 千阳县| 隆安县| 邳州市| 江安县| 潜山县| 来凤县| 凯里市| 汪清县| 宜丰县| 余干县| 阿荣旗| 萨嘎县| 彭山县| 登封市| 保定市| 衡南县| 娄底市| 定南县| 九寨沟县| 玛沁县| 张家港市| 宝丰县| 神农架林区| 富民县| 石渠县| 新乡市| 辽宁省| 惠水县| 阜新市| 丁青县| 锡林浩特市| 兰坪| 新干县| 玛曲县| 额济纳旗| 云安县| 车致| 丹棱县| 丹凤县| 班玛县| 新宁县| 伊金霍洛旗| 托克托县| 双鸭山市| 奉节县| 安丘市| 长子县| 北海市| 台东县| 修文县| 台安县| 万载县| 平湖市| 长岭县| 怀安县| 宣武区| 罗田县| 永登县| 湘潭县| 桓仁| 海原县| 茌平县| 驻马店市| 山东省| 新安县| 上林县| 大英县| 驻马店市| 碌曲县| 金川县| 福泉市| 桐庐县| 革吉县| 黄山市| 南投市| 平湖市| 那坡县| 西城区| 十堰市| 玛多县| 北安市| 聊城市| 梧州市| 师宗县| 嘉善县| 山阴县| 夹江县| 新和县| 东安县| 兴文县| 平乡县| 阜平县| 金华市| 友谊县| 赤峰市| 灵武市| 正安县| 天门市| 湖州市| 黔南| 克东县| 大安市| 阆中市| 敦化市| 南昌县| 永宁县| 铜陵市| 三明市| 广南县| 中西区| 酉阳| 汉川市| 县级市| 富裕县| 景东| 汉川市| 清流县| 迭部县| 湘阴县| 溧阳市| 武宣县| 抚顺县| 仙游县| 兴山县| 重庆市| 罗城| 泰安市| 寿宁县| 沽源县| 基隆市| 湘阴县| 平泉县| 张家界市| 罗城| 梅河口市| 连州市| 迭部县| 河间市| 临邑县| 雅江县| 贵港市| 平乐县| 阳春市| 逊克县| 贵阳市| 怀集县| 建湖县| 台湾省| 江门市| 秦皇岛市| 东辽县| 伊吾县| 获嘉县| 沁源县| 望江县| 丹凤县| 临漳县| 桐庐县| 海宁市| 阳原县| 错那县| 新邵县| 临武县| 铜山县| 响水县| 汉阴县| 嘉祥县| 扎兰屯市| 尖扎县| 微山县| 河北省| 江西省| 澄迈县| 抚宁县| 漾濞| 辉县市| 常宁市| 新巴尔虎左旗| 扶风县| 莱州市| 黔南| 泗洪县| 阿拉善右旗| 西盟| 历史| 尼木县| 巴青县| 游戏| 龙陵县| 卓尼县| 昭苏县| 皮山县| 大宁县| 特克斯县| 濮阳县| 嫩江县| 青海省| 来宾市| 邹平县| 定襄县| 平江县| 巩留县| 孝义市| 遂平县| 广元市| 东乌| 华宁县| 香格里拉县| 万全县| 满洲里市| 大荔县| 普定县| 辽阳县| 合山市| 定襄县| 乐山市| 秦皇岛市| 秭归县| 荃湾区| 胶南市| 三门县| 临桂县| 自贡市| 精河县| 太白县| 石城县| 北京市| 泾川县| 柳州市| 瓦房店市| 福海县| 资中县| 沁源县| 类乌齐县| 泾源县| 崇礼县| 鄂伦春自治旗| 宜兴市| 六安市| 浙江省| 平乡县| 浑源县| 连江县| 宣城市| 栖霞市| 石狮市| 抚顺市| 渭源县| 靖宇县| 英山县| 彰化县| 获嘉县| 应城市| 沾益县| 扎囊县| 连山| 兴文县| 固始县| 湛江市| 汤阴县| 保康县| 铁岭市| 静宁县| 鹤壁市| 通河县| 全州县| 凤翔县| 克什克腾旗| 定结县| 扎兰屯市| 湘西| 惠东县| 太保市| 张北县| 屏东市| 夏邑县| 康平县| 清远市| 报价| 呼伦贝尔市| 奎屯市| 庐江县| 茶陵县| 台北市| 五原县| 大丰市| 芦溪县| 浪卡子县| 岳普湖县| 勐海县| 历史| 简阳市| 海阳市| 元江| 临湘市| 高雄县| 平潭县| 楚雄市| 新巴尔虎右旗| 个旧市| 闵行区| 浏阳市| 班玛县| 临漳县| 中超| 洛扎县| 永靖县| 淳化县| 连平县| 濮阳县| 东海县| 巴楚县| 灵川县| 通辽市| 青岛市| 盐山县| 黄冈市| 八宿县| 北京市| 屏南县| 兴业县| 泸定县| 靖远县| 青龙| 蓬溪县| 连州市| 莱芜市| 乌审旗| 绥江县| 寻乌县| 花莲市| 聂拉木县| 伊通| 五峰| 安国市| 凉城县| 江阴市| 靖宇县| 当涂县| 正定县| 正镶白旗| 浪卡子县| 金川县| 巴林左旗| 九龙坡区| 孟津县| 凤城市| 渭源县| 蓬莱市| 秀山| 邢台市| 抚远县| 远安县| 得荣县| 勐海县| 溆浦县| 仁寿县| 蕲春县| 墨江| 遂平县| 翼城县| 若尔盖县| 乌兰察布市| 高阳县| 汉川市| 南投市| 红河县| 孟连| 福海县| 东至县| 四会市| 元阳县| 牟定县| 古浪县| 葵青区| 图木舒克市| 鸡泽县| 琼结县| 咸丰县| 富裕县| 岳池县| 阜宁县| 施秉县| 大理市| 兴安盟| 嘉祥县| 深圳市| 凌云县| 长治市| 林甸县| 舞阳县| 安吉县| 石柱| 连云港市| 会宁县| 重庆市| 福鼎市| 定边县| 龙井市| 新竹县| 泰来县| 苍山县| 从化市| 龙川县| 芦溪县| 绥滨县| 平遥县| 林周县| 景洪市| 汉川市| 苏尼特右旗| 岢岚县| 麻栗坡县| 上高县| 都匀市| 绍兴县| 天全县| 白山市| 淮阳县| 九龙坡区| 两当县| 高碑店市| 诏安县| 九台市| 关岭| 茂名市| 海伦市| 武川县| 临高县| 德兴市| 吕梁市| 宣汉县| 涡阳县| 高陵县| 双鸭山市| 天峨县| 白银市| 五河县| 砚山县| 花莲市| 车致| 昭平县| 罗山县| 曲阜市| 尉氏县| 阿拉善左旗| 闻喜县| 清远市| 历史| 抚松县| 平潭县| 若羌县| 海城市| 蒙山县| 丁青县| 城市| 伊金霍洛旗| 电白县| 黄山市| 阿拉善盟| 顺平县| 扎鲁特旗| 苏尼特左旗| 安吉县| 漾濞| 乐安县| 旬邑县| 海林市| 浦北县| 台东县| 友谊县| 新余市| 大渡口区| 聂拉木县| 通辽市| 安徽省| 公主岭市| 平湖市| 商水县| 高尔夫| 罗江县| 平和县| 轮台县| 那坡县| 富锦市| 南乐县| 西和县| 长葛市| 扎囊县| 临潭县| 宝清县| 繁昌县| 汝州市| 衡东县| 英德市| 泌阳县| 宁波市| 平乡县| 崇左市| 台北县| 济源市| 哈巴河县| 衡阳市| 通州区| 临江市| 栾川县| 罗定市| 白朗县| 家居| 皮山县| 旌德县| 桂阳县| 滨州市| 丰城市| 土默特左旗| 孟州市| 武安市| 治县。| 扎鲁特旗| 广汉市| 克拉玛依市| 建始县| 昆明市| 八宿县| 县级市| 江城| 民乐县| 佛坪县| 祥云县| 新泰市| 阿荣旗| 清原| 洱源县| 龙南县| 页游| 渑池县| 新宾| 丹阳市| 个旧市| 石台县| 礼泉县| 前郭尔| 太原市| 容城县| 陇南市| 黔东| 古浪县| 色达县| 齐河县| 乡宁县| 彭水| 利辛县| 子洲县| 南安市| 涞水县| 邹城市| 名山县| 中卫市| 崇义县| 施甸县| 大兴区| 大同县| 徐州市| 康平县| 乌拉特中旗| 新河县| 凌源市| 若羌县| http://wap.hz0j3r5vo.fun http://m.jx1870jackv.fun http://m.jx1870graduatev.fun http://m.jx1870knowv.fun http://wap.jx1870gradev.fun http://www.jx1870guardv.fun http://m.jx1870handv.fun http://wap.jx1870forcev.fun http://wap.jx1870frenchv.fun http://jx1870frazev.fun http://wap.jx1870enjoyv.fun http://m.jx1870enjoyv.fun http://m.jx1870juzpv.fun http://wap.jx1870frenchv.fun http://wap.jx1870guidev.fun http://wap.hz0j0r7vo.fun http://m.jx1870hopv.fun http://www.jx1870icev.fun