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 最快开奖记录结果_小鱼儿玄机2站开奖 开奖结果 周至县| 壶关县| 泉州市| 玉田县| 扶风县| 外汇| 长岛县| 浪卡子县| 建始县| 当雄县| 靖远县| 晋城| 科技| 永川市| 正镶白旗| 长海县| 慈利县| 阳城县| 蒙山县| 靖边县| 民县| 镇远县| 定西市| 达孜县| 桂平市| 万宁市| 文安县| 通化县| 阜新| 黄大仙区| 岳西县| 两当县| 吉木乃县| 通渭县| 特克斯县| 柳河县| 仪征市| 洛阳市| 湘潭市| 武城县| 孟州市| 上饶县| 台湾省| 蓬莱市| 特克斯县| 遵义市| 乌鲁木齐县| 隆安县| 奇台县| 松溪县| 龙山县| 竹溪县| 溆浦县| 永年县| 格尔木市| 北辰区| 武强县| 渝中区| 咸丰县| 秦安县| 开封县| 嘉峪关市| 石河子市| 南京市| 虞城县| 望城县| 阿拉尔市| 增城市| 寿光市| 长春市| 拉孜县| 南通市| 红河县| 武强县| 澄迈县| 锡林浩特市| 新昌县| 沂水县| 兴宁市| 汉川市| 夏邑县| 开化县| 隆德县| 仁化县| 浑源县| 红河县| 肇庆市| 镶黄旗| 兴业县| 澳门| 新野县| 威宁| 灵川县| 泽州县| 芜湖县| 监利县| 绍兴市| 视频| 安溪县| 孟村| 西藏| 平陆县| 武夷山市| 中牟县| 台南市| 虹口区| 延庆县| 南通市| 龙岩市| 永城市| 南漳县| 揭东县| 监利县| 资溪县| 正安县| 石首市| 同江市| 江城| 江油市| 建阳市| 左贡县| 秦皇岛市| 博野县| 枣阳市| 桂平市| 淮滨县| 鸡西市| 和林格尔县| 达拉特旗| 许昌县| 永定县| 日土县| 宁津县| 南华县| 开化县| 岳阳县| 普兰县| 镇坪县| 乌兰县| 西乌| 故城县| 鸡泽县| 平山县| 伊宁市| 博客| 正镶白旗| 宜章县| 大洼县| 花垣县| 田林县| 四川省| 翼城县| 响水县| 五指山市| 余庆县| 玛沁县| 台中市| 宁蒗| 四会市| 汨罗市| 咸宁市| 临汾市| 宁城县| 囊谦县| 九龙县| 东台市| 金川县| 承德市| 孟津县| 呼图壁县| 调兵山市| 白城市| 伊春市| 巴林左旗| 鲁山县| 临猗县| 木里| 常州市| 新竹市| 天门市| 丰台区| 甘德县| 灵璧县| 漾濞| 新兴县| 墨竹工卡县| 响水县| 高台县| 南投市| 印江| 南投市| 定结县| 莱西市| 德惠市| 西乌珠穆沁旗| 灵璧县| 富宁县| 梓潼县| 吉首市| 绿春县| 龙游县| 阆中市| 淳化县| 广河县| 张家口市| 西吉县| 乐业县| 昌乐县| 福州市| 望谟县| 舞钢市| 沁水县| 商洛市| 顺昌县| 黑河市| 汉源县| 牙克石市| 秦皇岛市| 景谷| 昭通市| 英吉沙县| 达孜县| 定结县| 京山县| 永城市| 宁晋县| 华宁县| 郯城县| 承德县| 罗田县| 秀山| 澎湖县| 吉林市| 开平市| 洛川县| 丽江市| 武冈市| 钦州市| 稻城县| 保亭| 鄂托克旗| 庆阳市| 桐柏县| 中阳县| 聂荣县| 石狮市| 商洛市| 虹口区| 治县。| 东方市| 平塘县| 电白县| 濮阳县| 萨迦县| 且末县| 故城县| 长子县| 镇远县| 罗定市| 淮北市| 柳林县| 丹巴县| 长宁区| 南溪县| 江西省| 舟曲县| 大宁县| 泗洪县| 宜都市| 湘乡市| 余干县| 肇东市| 元氏县| 唐山市| 色达县| 崇仁县| 永康市| 绵竹市| 天峻县| 扬中市| 咸阳市| 宿迁市| 晴隆县| 大名县| 广河县| 乡城县| 台江县| 那曲县| 洪江市| 曲阜市| 绥棱县| 贺兰县| 会东县| 叙永县| 无极县| 宜丰县| 安多县| 忻州市| 鄢陵县| 三台县| 和政县| 西宁市| 临西县| 正镶白旗| 家居| 罗田县| 鸡西市| 碌曲县| 舟山市| 丹棱县| 云和县| 镇雄县| 福安市| 屏山县| 保定市| 新巴尔虎左旗| 桦南县| 永吉县| 勃利县| 介休市| 西青区| 怀安县| 彰化县| 陇西县| 垫江县| 扬中市| 鄯善县| 衢州市| 江永县| 浠水县| 库尔勒市| 天祝| 肇庆市| 驻马店市| 肥东县| 双辽市| 永和县| 喀什市| 白河县| 海丰县| 涿鹿县| 石屏县| 乡宁县| 札达县| 宿松县| 吴川市| 兰州市| 江西省| 永丰县| 嘉善县| 芜湖市| 龙海市| 胶南市| 石狮市| 建平县| 元氏县| 丰原市| 柳州市| 四平市| 腾冲县| 扎兰屯市| 谷城县| 鸡泽县| 岳阳县| 浪卡子县| 太保市| 浑源县| 河南省| 宜城市| 盐源县| 贵南县| 南木林县| 渝中区| 南岸区| 尉氏县| 永新县| 无极县| 宜章县| 威宁| 离岛区| 临安市| 平顶山市| 措美县| 紫云| 阳江市| 毕节市| 饶平县| 竹山县| 青阳县| 霍邱县| 永吉县| 镇安县| 美姑县| 金溪县| 任丘市| 云安县| 寻甸| 通江县| 临海市| 贵州省| 榕江县| 白水县| 子洲县| 巧家县| 新化县| 清新县| 小金县| 远安县| 绥芬河市| 那曲县| 白城市| 贺兰县| 嘉善县| 咸阳市| 永靖县| 如皋市| 徐州市| 象山县| 招远市| 嘉鱼县| 安顺市| 惠来县| 富阳市| 新乐市| 什邡市| 三明市| 稻城县| 新余市| 平罗县| 临沂市| 宁武县| 祁东县| 西安市| 沙田区| 晋中市| 锡林郭勒盟| 南漳县| 文昌市| 于都县| 曲阜市| 潍坊市| 霍州市| 丰宁| 滨海县| 民勤县| 弋阳县| 望谟县| 阿鲁科尔沁旗| 察隅县| 深水埗区| 镇巴县| 阿克苏市| 神木县| 马关县| 南岸区| 德州市| 太湖县| 河北省| 尖扎县| 老河口市| 怀来县| 广南县| 淮阳县| 广河县| 济源市| 石屏县| 镇原县| 台湾省| 长兴县| 光泽县| 洪雅县| 阳西县| 丰顺县| 蒙阴县| 米脂县| 荆门市| 象山县| 伊宁县| 新丰县| 沧州市| 庐江县| 榆社县| 合江县| 和田县| 友谊县| 方山县| 明溪县| 洪湖市| 璧山县| 汝城县| 胶州市| 句容市| 苏尼特右旗| 岳阳县| 祁门县| 化隆| 临潭县| 长垣县| 宜川县| 平谷区| 如皋市| 灌阳县| 奎屯市| 大兴区| 绥中县| 荃湾区| 呈贡县| 大邑县| 濮阳市| 云和县| 鄂尔多斯市| 页游| 姜堰市| 城固县| 怀仁县| 德兴市| 涟源市| 阳原县| 赣州市| 宣恩县| 夏津县| 阳新县| 宜川县| 嘉峪关市| 天峨县| 长顺县| 佛坪县| 临潭县| 大邑县| 虎林市| 久治县| 若尔盖县| 淄博市| 多伦县| 达孜县| 凤城市| 宜阳县| 柳州市| 会理县| 贺兰县| 碌曲县| 庆城县| 禄丰县| 增城市| 盖州市| 乃东县| 襄城县| 仪征市| 屏东县| 新泰市| 东乡| 临潭县| 呼玛县| 衡阳县| 清镇市| 东源县| 鹿邑县| 荥阳市| 资源县| 清远市| 云梦县| 宁安市| 长兴县| 介休市| 英山县| 满城县| 射洪县| 四平市| 成都市| 四子王旗| 平顶山市| 平顺县| 阜宁县| 彩票| 三江| 易门县| 新泰市| 周口市| 宿迁市| 永年县| 甘谷县| 襄城县| 西乌珠穆沁旗| 包头市| 重庆市| 昌黎县| 新田县| 错那县| 忻州市| 清远市| 南部县| 井研县| 边坝县| 玛曲县| 达日县| 凯里市| 林州市| 金华市| 绥德县| 徐州市| 天气| 定陶县| 玛多县| 土默特右旗| 双柏县| 安泽县| 措勤县| 廊坊市| 安达市| 江陵县| 岑溪市| 江安县| 英德市| 开阳县| 大足县| http://wap.gehxsq.fit http://m.rhpfhe.fit http://wap.dgrlkz.fit http://gtmqbl.fit http://www.buokmb.fit http://www.ankepy.fit http://m.cpyhck.fit http://www.iyzxjq.fit http://m.yieezc.fit http://www.bjxaen.fit http://m.exubpv.fit http://www.gujxvy.fit http://m.xwzpcb.fit http://www.laybxf.fit http://m.opwjal.fit http://www.ctjnnv.fit http://m.olruqg.fit http://www.vdggyj.fit