• 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
    相关文章
    相关标签/搜索
    四肖八码中特二四六天天好彩免费资料大全香港马会最快开奖现场开奖结果免费资料历史记录大全一肖一码期期准1 一在线查询网 婺源县| 威远县| 兴业县| 呼玛县| 额尔古纳市| 托克托县| 德钦县| 安平县| 四子王旗| 东光县| 广州市| 商南县| 莒南县| 宿松县| 门源| 利辛县| 洪泽县| 且末县| 寿光市| 建宁县| 两当县| 太仓市| 营山县| 习水县| 钦州市| 阿坝| 莫力| 都兰县| 隆安县| 云和县| 榆树市| 靖江市| 阳西县| 广昌县| 集安市| 云霄县| 宁晋县| 寿光市| 曲水县| 昭平县| 武夷山市| 乐业县| 长泰县| 山阳县| 罗江县| 中阳县| 凤翔县| 灌云县| 虞城县| 北海市| 裕民县| 宣威市| 曲靖市| 肇庆市| 麻城市| 迁安市| 环江| 九龙城区| 彭山县| 明星| 乌兰察布市| 定结县| 伽师县| 房产| 新余市| 逊克县| 额尔古纳市| 桐城市| 泰州市| 澄迈县| 高碑店市| 五家渠市| 无棣县| 电白县| 手机| 桐乡市| 兴宁市| 文登市| 秦皇岛市| 视频| 东明县| 青田县| 安康市| 富锦市| 城口县| 左权县| 二连浩特市| 漯河市| 留坝县| 繁昌县| 静安区| 通辽市| 南和县| 旺苍县| 宁波市| 墨竹工卡县| 龙口市| 黄大仙区| 天镇县| 嵊州市| 平远县| 中牟县| 西乡县| 德江县| 潼关县| 日土县| 嘉鱼县| 密山市| 沙河市| 桃江县| 鹿泉市| 横峰县| 甘肃省| 壶关县| 长子县| 霸州市| 安泽县| 通道| 清远市| 绥芬河市| 柳州市| 甘南县| 布尔津县| 吉木乃县| 隆林| 始兴县| 神木县| 同仁县| 治多县| 称多县| 墨脱县| 吉首市| 正安县| 无为县| 宁晋县| 白玉县| 宝清县| 洛宁县| 社旗县| 合山市| 聂荣县| 沙坪坝区| 石楼县| 北宁市| 华安县| 根河市| 通渭县| 叙永县| 永丰县| 平和县| 新疆| 玉溪市| 富裕县| 嘉鱼县| 龙里县| 尼玛县| 西林县| 格尔木市| 梁平县| 昭觉县| 都昌县| 涞源县| 宁远县| 虹口区| 错那县| 朝阳区| 清丰县| 嘉荫县| 都江堰市| 东兰县| 琼海市| 保亭| 三门峡市| 临潭县| 东源县| 和林格尔县| 大邑县| 南城县| 板桥市| 谷城县| 库伦旗| 南部县| 健康| 彭阳县| 庆安县| 广西| 金华市| 通州市| 金山区| 青海省| 乐业县| 苍南县| 勐海县| 南昌市| 札达县| 专栏| 清镇市| 大城县| 南汇区| 巢湖市| 鸡东县| 涞源县| 同心县| 景谷| 前郭尔| 东源县| 南安市| 关岭| 镇巴县| 南京市| 新乡县| 和顺县| 大关县| 博罗县| 浦县| 深泽县| 武乡县| 汉阴县| 宜宾市| 全州县| 涟水县| 玉门市| 曲靖市| 陆丰市| 顺义区| 伊吾县| 凤台县| 方城县| 东乡族自治县| 怀仁县| 莱州市| 青神县| 宕昌县| 新化县| 汝阳县| 股票| 嵊泗县| 久治县| 桓台县| 当雄县| 天气| 陇西县| 鹰潭市| 夹江县| 合山市| 利津县| 上蔡县| 尼勒克县| 东兴市| 沾化县| 晋州市| 兴安县| 方正县| 略阳县| 蕲春县| 千阳县| 太仓市| 江川县| 乌海市| 舟山市| 北宁市| 泽州县| 西城区| 沙雅县| 锦屏县| 海城市| 都江堰市| 东港市| 苍南县| 壤塘县| 丽水市| 东海县| 文成县| 邢台县| 五台县| 乌拉特前旗| 上栗县| 政和县| 冷水江市| 闵行区| 赤峰市| 兴义市| 玉山县| 望谟县| 宝兴县| 隆德县| 玉龙| 朔州市| 读书| 临潭县| 琼海市| 原阳县| 石家庄市| 大竹县| 廉江市| 江阴市| 富锦市| 凯里市| 金门县| 定陶县| 吉隆县| 宝山区| 巴林左旗| 寿阳县| 疏附县| 开阳县| 苍山县| 永清县| 乌鲁木齐县| 茌平县| 日土县| 永城市| 五家渠市| 十堰市| 西和县| 潜山县| 中江县| 班戈县| 黔东| 呼图壁县| 瓮安县| 大英县| 泸溪县| 黑河市| 郧西县| 牡丹江市| 麻栗坡县| 鹿邑县| 桐城市| 江达县| 竹山县| 同心县| 庆安县| 将乐县| 久治县| 镇远县| 绥滨县| 华池县| 河源市| 山阴县| 红河县| 泗水县| 甘泉县| 明光市| 武宣县| 石河子市| 吉安县| 甘孜县| 武胜县| 连南| 渝北区| 郸城县| 信阳市| 化隆| 吕梁市| 于都县| 丰台区| 岳池县| 大宁县| 夹江县| 吕梁市| 黄山市| 威远县| 承德县| 阳山县| 林芝县| 麻城市| 大洼县| 历史| 如东县| 麻江县| 全椒县| 阿图什市| 云梦县| 图木舒克市| 许昌市| 洛浦县| 土默特右旗| 永顺县| 改则县| 班玛县| 志丹县| 崇阳县| 驻马店市| 丽水市| 陆良县| 宣化县| 瓮安县| 阿勒泰市| 扬中市| 龙州县| 谢通门县| 大埔区| 枞阳县| 衡东县| 积石山| 绥德县| 延边| 贵定县| 山东省| 临汾市| 临泽县| 宁都县| 五大连池市| 拜城县| 怀远县| 资中县| 太保市| 永康市| 玉树县| 大厂| 长顺县| 江永县| 叙永县| 道孚县| 南召县| 辽宁省| 巍山| 老河口市| 财经| 乌拉特中旗| 永昌县| 天门市| 巴青县| 三原县| 察哈| 成安县| 凉山| 金昌市| 宣化县| 兴海县| 鲁甸县| 濮阳县| 建阳市| 乐都县| 兴化市| 潞城市| 高要市| 宣威市| 九龙城区| 家居| 内江市| 澄迈县| 阿拉尔市| 武川县| 类乌齐县| 涡阳县| 广河县| 通许县| 蒲城县| 罗田县| 大港区| 老河口市| 维西| 屏东市| 天祝| 阜南县| 仁寿县| 呈贡县| 庆城县| 三台县| 海口市| 平和县| 连山| 九龙坡区| 苏尼特左旗| 措勤县| 舟山市| 东兰县| 麦盖提县| 泰和县| 罗平县| 荃湾区| 平遥县| 翁牛特旗| 怀远县| 永定县| 阿拉善右旗| 连平县| 宝山区| 顺义区| 德庆县| 辽阳市| 剑川县| 于都县| 年辖:市辖区| 浦东新区| 盱眙县| 汕尾市| 龙陵县| 湟源县| 当雄县| 平利县| 刚察县| 措美县| 怀化市| 栾川县| 锡林浩特市| 饶阳县| 红原县| 湖口县| 永宁县| 呼伦贝尔市| 平南县| 永宁县| 于田县| 古浪县| 田东县| 双辽市| 唐山市| 余庆县| 滕州市| 凉山| 二连浩特市| 石家庄市| 仁寿县| 临漳县| 阳城县| 大足县| 惠州市| 额敏县| 文化| 尖扎县| 邵东县| 磐石市| 工布江达县| 毕节市| 苍山县| 偏关县| 安化县| 无极县| 兴国县| 长寿区| 泽州县| 辉县市| 夏河县| 城步| 通道| 永靖县| 万山特区| 靖远县| 襄汾县| 宁河县| 筠连县| 北安市| 大宁县| 托克逊县| 德令哈市| 临朐县| 五河县| 自贡市| 镶黄旗| 石门县| 新源县| 股票| 新竹市| 阿合奇县| 府谷县| 彭州市| 梁山县| 齐河县| 大连市| 平凉市| 石首市| 山阳县| 绥芬河市| 城固县| 塔城市| 武山县| 东乌珠穆沁旗| 九寨沟县| 桑日县| 郧西县| 长丰县| 昌图县| 丹东市| 定日县| 炎陵县| 晋江市| 琼中| 如皋市| 永登县| 南平市| 兴安盟| 鄂州市| 永兴县| 万盛区| 柘城县| 水富县| 色达县| 嘉禾县| 宁海县| 庐江县| 唐山市| 屏山县| 沭阳县| 自贡市| 泰宁县| 布拖县| 巩留县| 瓦房店市| 邓州市| 松滋市| 梁平县| 广州市| 琼结县| 禹城市| 务川| 栖霞市| 永吉县| 山阳县| 巴林右旗| 湟源县| 福州市| 揭西县| http://m.jx1870groupv.fun http://www.hz0j2r2vo.fun http://m.jx1870existv.fun http://jx1870judgev.fun http://wap.hz0j0r7vo.fun http://hz0j4r7vo.fun http://m.jx1870expectv.fun http://wap.jx1870featurev.fun http://m.jx1870lastv.fun http://wap.jx1870floorv.fun http://wap.hz0j4r0vo.fun http://www.jx1870engineerv.fun http://www.hz0j4r5vo.fun http://wap.jx1870heatv.fun http://m.jx1870jointv.fun http://wap.jx1870expandv.fun http://www.jx1870insertv.fun http://jx1870fieldv.fun