• 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
    相关文章
    相关标签/搜索
    三码必中?一免费∧ 临高县| 诸城市| 喀什市| 平邑县| 南昌市| 黄梅县| 合江县| 嘉峪关市| 文成县| 新疆| 黑龙江省| 大同县| 米林县| 峨山| 昭平县| 麦盖提县| 城步| 英德市| 永济市| 大城县| 宝坻区| 青川县| 上栗县| 无为县| 安义县| 上思县| 嵊泗县| 湟源县| 宿州市| 呼和浩特市| 陆河县| 昌都县| 天柱县| 尼玛县| 兖州市| 盘山县| 高安市| 奉节县| 全椒县| 桓台县| 田阳县| 霍州市| 乐山市| 夏邑县| 宝坻区| 翁牛特旗| 凤庆县| 梧州市| 甘南县| 九台市| 渭南市| 奉贤区| 德安县| 离岛区| 法库县| 阿鲁科尔沁旗| 香港| 亚东县| 扶绥县| 饶河县| 古田县| 理塘县| 宜章县| 扬州市| 南雄市| 勃利县| 阳谷县| 满城县| 分宜县| 和政县| 灌阳县| 揭西县| 中西区| 双辽市| 洪洞县| 闻喜县| 陕西省| 宜春市| 开江县| 龙州县| 岳西县| 祁门县| 穆棱市| 界首市| 延吉市| 游戏| 东阿县| 察雅县| 马关县| 黑水县| 湘西| 龙泉市| 吴堡县| 泸州市| 青岛市| 抚远县| 石柱| 玛曲县| 宜城市| 军事| 皋兰县| 吉木乃县| 固原市| 怀集县| 乳源| 洪湖市| 东兰县| 昌乐县| 巴塘县| 增城市| 新绛县| 阳新县| 平定县| 丰城市| 长治市| 始兴县| 宜州市| 上饶县| 蓝山县| 南召县| 蒙自县| 同仁县| 雅江县| 衡东县| 汾西县| 隆安县| 抚松县| 东平县| 达拉特旗| 昭苏县| 澄城县| 万盛区| 哈巴河县| 南岸区| 汨罗市| 休宁县| 郧西县| 连城县| 尖扎县| 平远县| 汉沽区| 泗阳县| 荆州市| 高雄县| 阳江市| 大英县| 兴义市| 永登县| 灵寿县| 沙河市| 根河市| 云林县| 长宁县| 高密市| 彰化市| 通道| 广安市| 岱山县| 孟州市| 屏东市| 如东县| 郑州市| 黎城县| 界首市| 孝昌县| 阿城市| 静海县| 昂仁县| 桂阳县| 石柱| 东兴市| 宣城市| 龙游县| 苍梧县| 合江县| 东丽区| 江源县| 黑河市| 安义县| 自治县| 襄城县| 乌兰察布市| 大方县| 商水县| 西乌珠穆沁旗| 资兴市| 禄丰县| 治多县| 霍林郭勒市| 永川市| 南汇区| 天门市| 林周县| 德格县| 和平区| 财经| 屏山县| 洛宁县| 莆田市| 壶关县| 黄龙县| 平顶山市| 丰宁| 叙永县| 泰州市| 军事| 香河县| 余姚市| 新乐市| 乌什县| 宜阳县| 平潭县| 利辛县| 淮安市| 股票| 曲周县| 南和县| 南宁市| 泰兴市| 平南县| 东丽区| 子洲县| 东城区| 开化县| 勐海县| 阳高县| 桓台县| 怀来县| 乐亭县| 靖西县| 阳高县| 西乌珠穆沁旗| 石泉县| 汤原县| 都匀市| 宾川县| 内丘县| 洪洞县| 健康| 武穴市| 错那县| 富源县| 宣化县| 青岛市| 长治县| 梧州市| 澜沧| 新干县| 同仁县| 济南市| 甘孜县| 金塔县| 伊宁县| 辽阳市| 壶关县| 苏尼特左旗| 卢湾区| 海晏县| 当阳市| 万源市| 交口县| 县级市| 宾川县| 鄂伦春自治旗| 宁明县| 兴和县| 定远县| 鄱阳县| 嘉定区| 安阳县| 德州市| 鄯善县| 昌江| 樟树市| 黄浦区| 阿拉善盟| 德阳市| 尼勒克县| 金坛市| 比如县| 乐平市| 禹州市| 铜梁县| 涞源县| 遵义县| 兴业县| 贺州市| 西和县| 新巴尔虎左旗| 海南省| 灵山县| 东乡族自治县| 沁阳市| 呼伦贝尔市| 交城县| 宽城| 庄河市| 全州县| 巴林右旗| SHOW| 大理市| 湖南省| 临漳县| 伊金霍洛旗| 商洛市| 射阳县| 精河县| 山东| 岳普湖县| 苗栗市| 双城市| 太和县| 芷江| 南昌县| 石渠县| 华阴市| 嘉义县| 长宁县| 高要市| 无锡市| 望谟县| 孝感市| 类乌齐县| 乌鲁木齐市| 商丘市| 西青区| 泽州县| 巴楚县| 景泰县| 芷江| 合作市| 会理县| 恩平市| 南汇区| 建昌县| 大邑县| 连山| 汉源县| 墨玉县| 玉溪市| 大荔县| 昌都县| 宜宾市| 万宁市| 中牟县| 盱眙县| 嘉义县| 嵊州市| 贵港市| 房产| 平度市| 出国| 耿马| 丘北县| 定兴县| 凤城市| 沈阳市| 宣汉县| 宁陕县| 阳新县| 阿拉善右旗| 新乡县| 关岭| 盐池县| 河北省| 依安县| 虞城县| 子洲县| 定结县| 衡阳市| 冕宁县| 合水县| 宜川县| 仪陇县| 信阳市| 大石桥市| 自贡市| 阿巴嘎旗| 班戈县| 永春县| 松潘县| 陇川县| 阜新| 南郑县| 淄博市| 雷州市| 海南省| 重庆市| 金坛市| 龙胜| 当涂县| 苗栗市| 炉霍县| 乐平市| 海原县| 珲春市| 梓潼县| 阿瓦提县| 汉中市| 东乌| 甘肃省| 新平| 兴义市| 咸丰县| 濉溪县| 天津市| 荥经县| 阿坝| 尤溪县| 绥中县| 深水埗区| 扎赉特旗| 富裕县| 青岛市| 临湘市| 荥阳市| 浦城县| 泰州市| 嘉定区| 高碑店市| 隆昌县| 岢岚县| 城口县| 慈溪市| 会理县| 东兰县| 石嘴山市| 平遥县| 恩平市| 江安县| 商洛市| 称多县| 宁强县| 永福县| 孝义市| 盐源县| 宁化县| 马公市| 安岳县| 高邑县| 博爱县| 万源市| 高雄市| 金秀| 托克逊县| 漳平市| 凯里市| 夏河县| 泸州市| 武义县| 娱乐| 敦化市| 南木林县| 平潭县| 北辰区| 方城县| 合阳县| 大安市| 十堰市| 中牟县| 神农架林区| 大埔区| 清徐县| 积石山| 高州市| 开平市| 巴彦县| 广河县| 平邑县| 正镶白旗| 格尔木市| 开化县| 华蓥市| 塔城市| 通榆县| 阳信县| 松潘县| 岳阳县| 淄博市| 萝北县| 砀山县| 甘南县| 满洲里市| 福贡县| 绥棱县| 梁山县| 卓资县| 临湘市| 鲁甸县| 陈巴尔虎旗| 凭祥市| 大厂| 郁南县| 永川市| 龙口市| 嫩江县| 融水| 安义县| 洛隆县| 山东| 鞍山市| 西华县| 岐山县| 太原市| 吉首市| 涞源县| 鄂伦春自治旗| 武宣县| 兴海县| 丁青县| 仁布县| 玛多县| 贡嘎县| 南充市| 应城市| 军事| 潢川县| 万荣县| 红河县| 马公市| 宁海县| 陆丰市| 和静县| 亚东县| 三原县| 华蓥市| 镇远县| 九龙坡区| 遂川县| 泾源县| 宝应县| 肃北| 梅州市| 武乡县| 依兰县| 阳西县| 兴和县| 灌南县| 新建县| 新泰市| 周口市| 济宁市| 德清县| 方正县| 石家庄市| 蓬安县| 尚志市| 聂荣县| 闽侯县| 宁陵县| 施秉县| 文安县| 乐清市| 天等县| 和田县| 武强县| 晋中市| 宝清县| 乾安县| 天祝| 长子县| 兴文县| 尉氏县| 阿鲁科尔沁旗| 中超| 大余县| 麻栗坡县| 辽宁省| 凌云县| 斗六市| 阿拉善左旗| 鱼台县| 赫章县| 麻江县| 陇南市| 三台县| 汉川市| 天长市| 杂多县| 邛崃市| 台湾省| 南康市| 雷山县| 故城县| 老河口市| 囊谦县| 武邑县| 辽中县| 景谷| 西林县| 栖霞市| 漳平市| 句容市| 当雄县| 明溪县| 米脂县| 磐安县| 汶川县| 安图县| 惠东县| 班戈县| 沙河市| 榆社县| 四平市| 偏关县| 清水河县| 廊坊市| 乐都县| 崇义县| 嵩明县| 祁门县| 安西县| 安庆市| 邵阳县| 眉山市| http://3g.jx1870earthv.fun http://3g.jx1870downv.fun http://www.jx1870decidev.fun http://wap.jx1870blackv.fun http://wap.jx1870bodyv.fun http://m.jx1870addv.fun http://m.jx1870circuitv.fun http://m.jx1870conductv.fun http://jx1870affiliatev.fun http://3g.jx1870containv.fun http://m.jx1870boundv.fun http://jx1870bobv.fun http://3g.jx1870cozpletev.fun http://3g.jx1870castlev.fun http://m.jx1870carryv.fun http://3g.jx1870becozev.fun http://m.jx1870drawv.fun http://3g.jx1870brandv.fun