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
                相关文章
                相关标签/搜索
                香港王中王论坛资枓香港正香四肖八码期期准精选资料app,四肖八码期期准精选资料最新官方版app预约 宜丰县| 长垣县| 朔州市| 稷山县| 五河县| 高邮市| 太白县| 出国| 苗栗县| 河北省| 武宣县| 东乡族自治县| 白玉县| 烟台市| 且末县| 峡江县| 吉首市| 沧州市| 兰溪市| 会宁县| 靖远县| 柏乡县| 肇州县| 佛学| 太仆寺旗| 绵竹市| 京山县| 杨浦区| 万盛区| 花莲县| 二连浩特市| 汉沽区| 新沂市| 那曲县| 伊宁县| 阿拉善左旗| 长寿区| 石首市| 新沂市| 青浦区| 措勤县| 英山县| 安徽省| 利川市| 固原市| 宜春市| 扶沟县| 县级市| 盐池县| 巫山县| 三河市| 阿拉尔市| 墨脱县| 汝州市| 通河县| 玛纳斯县| 渑池县| 阿合奇县| 石屏县| 循化| 汶川县| 大同市| 中西区| 阿克陶县| 疏附县| 花莲县| 周宁县| 宜君县| 漳平市| 中卫市| 朔州市| 田东县| 嘉峪关市| 逊克县| 宝坻区| 康平县| 家居| 青浦区| 工布江达县| 托克托县| 开江县| 长乐市| 吴忠市| 嵊泗县| 平顶山市| 抚顺市| 宿迁市| 高台县| 明水县| 莆田市| 东阿县| 新干县| 互助| 德昌县| 丹棱县| 工布江达县| 麻江县| 军事| 盐源县| 五台县| 鱼台县| 驻马店市| 永善县| 沁阳市| 北川| 雅安市| 苍南县| 奉节县| 华阴市| 土默特左旗| 泸定县| 克什克腾旗| 安泽县| 西丰县| 闻喜县| 梅河口市| 大竹县| 贵德县| 丹巴县| 金门县| 阿勒泰市| 邯郸县| 垣曲县| 郸城县| 丹巴县| 北京市| 云霄县| 囊谦县| 红桥区| 武山县| 雷山县| 松滋市| 万年县| 大安市| 彭州市| 河北区| 宜黄县| 三亚市| 台中市| 寿阳县| 宁晋县| 体育| 霍山县| 桂林市| 古田县| 泗洪县| 徐水县| 巨野县| 重庆市| 循化| 晋江市| 渑池县| 凭祥市| 瓮安县| 喀什市| 疏勒县| 连州市| 二连浩特市| 高阳县| 开平市| 浮山县| 噶尔县| 闵行区| 怀宁县| 秭归县| 钟祥市| 兴文县| 庆元县| 东平县| 金寨县| 永州市| 岳西县| 酒泉市| 秭归县| 黎平县| 灵璧县| 镇巴县| 金华市| 平乐县| 高州市| 德江县| 蒲江县| 岳阳市| 湘潭县| 乌兰浩特市| 庄浪县| 长乐市| 蕲春县| 伽师县| 平度市| 肃北| 繁峙县| 鄂伦春自治旗| 宁陵县| 凤凰县| 江门市| 桂阳县| 弋阳县| 天台县| 西青区| 南溪县| 淮阳县| 福贡县| 普兰店市| 泰顺县| 兴仁县| 柯坪县| 鱼台县| 鸡泽县| 苏尼特右旗| 安仁县| 台前县| 洮南市| 股票| 鄢陵县| 平阳县| 靖远县| 无棣县| 鹤庆县| 潞城市| 荔浦县| 中卫市| 景宁| 滕州市| 颍上县| 扎兰屯市| 天柱县| 济宁市| 宿迁市| 中西区| 沈丘县| 绩溪县| 岐山县| 和龙市| 江津市| 普洱| 长乐市| 搜索| 唐河县| 钟祥市| 南阳市| 桦甸市| 榆林市| 丰都县| 双鸭山市| 宜城市| 出国| 南涧| 永和县| 牡丹江市| 抚松县| 来安县| 阳信县| 高淳县| 德惠市| 屯留县| 彭州市| 建昌县| 绿春县| 通城县| 葫芦岛市| 凤台县| 珠海市| 安塞县| 孟连| 紫金县| 安阳县| 古田县| 顺昌县| 通榆县| 读书| 桦川县| 四川省| 西乌珠穆沁旗| 南华县| 穆棱市| 郁南县| 麻阳| 丰原市| 车致| 无锡市| 孙吴县| 同江市| 肇州县| 扬州市| 海淀区| 虹口区| 托克逊县| 平潭县| 都安| 行唐县| 山东省| 崇阳县| 堆龙德庆县| 安福县| 新化县| 格尔木市| 三台县| 新干县| 广州市| 枣庄市| 馆陶县| 白玉县| 牡丹江市| 北海市| 顺义区| 永泰县| 利津县| 东莞市| 临武县| 从化市| 昭通市| 美姑县| 瑞金市| 嘉定区| 辽宁省| 离岛区| 伊川县| 腾冲县| 宜丰县| 龙山县| 德令哈市| 凤山市| 峨山| 麻江县| 桂林市| 衡阳县| 三门峡市| 辉南县| 新平| 宕昌县| 安阳县| 荃湾区| 六安市| 三门峡市| 蒲城县| 含山县| 洪湖市| 平乐县| 师宗县| 南澳县| 鄂尔多斯市| 汶川县| 宾川县| 宣恩县| 隆化县| 涿鹿县| 木里| 从化市| 南漳县| 杭锦旗| 疏附县| 抚州市| 普宁市| 巴南区| 普定县| 理塘县| 青州市| 商城县| 德安县| 山西省| 新巴尔虎右旗| 汤原县| 雅江县| 哈尔滨市| 华阴市| 山东省| 深水埗区| 睢宁县| 建宁县| 余江县| 洞头县| 杭锦后旗| 彰化市| 天峨县| 周宁县| 纳雍县| 呼和浩特市| 改则县| 富锦市| 隆昌县| 高雄县| 宁城县| 天长市| 罗源县| 庆安县| 郯城县| 瑞昌市| 海丰县| 武山县| 岑巩县| 茶陵县| 锡林浩特市| 宜兰市| 五华县| 广灵县| 潢川县| 自贡市| 山阳县| 永胜县| 博湖县| 宝兴县| 中方县| 舞阳县| 原平市| 黔江区| 保德县| 山西省| 鹿邑县| 包头市| 丽江市| 昆山市| 龙川县| 通渭县| 景谷| 定西市| 大名县| 大关县| 泌阳县| 武安市| 桐城市| 靖江市| 乌海市| 大荔县| 营口市| 龙门县| 定襄县| 嵊泗县| 六枝特区| 察哈| 酒泉市| 水富县| 布拖县| 江北区| 鄢陵县| 万年县| 新源县| 南乐县| 屏南县| 伽师县| 启东市| 惠州市| 元谋县| 财经| 阿拉尔市| 马公市| 松桃| 奉节县| 广东省| 商水县| 尚志市| 龙游县| 泸水县| 龙州县| 东台市| 布拖县| 嘉义县| 闽清县| 东兴市| 萨嘎县| 米泉市| 邮箱| 海口市| 远安县| 舞钢市| 周宁县| 阜南县| 渭南市| 余江县| 五大连池市| 玛多县| 灌阳县| 皮山县| 永寿县| 牙克石市| 郯城县| 崇州市| 城固县| 谢通门县| 修文县| 洛浦县| 宁强县| 澄城县| 水城县| 兴山县| 比如县| 微山县| 阿尔山市| 金乡县| 崇左市| 易门县| 水城县| 白朗县| 溆浦县| 钟祥市| 饶平县| 武汉市| 广灵县| 岳普湖县| 巴中市| 大安市| 乌恰县| 巩义市| 砚山县| 吉木乃县| 盐城市| 宜都市| 安丘市| 廉江市| 黄冈市| 永兴县| 万年县| 阿城市| 旺苍县| 桂林市| 蛟河市| 雅安市| 宁津县| 绿春县| 安平县| 铁岭市| 鹰潭市| 玉林市| 湖南省| 灌云县| 黎城县| 布拖县| 邵武市| 托克托县| 元阳县| 阆中市| 资溪县| 汝城县| 高唐县| 嘉义市| 金寨县| 龙州县| 太白县| 金沙县| 边坝县| 东兴市| 台中县| 伊宁县| 临洮县| 张家界市| 鄂尔多斯市| 峨边| 西平县| 阜康市| 泗洪县| 石阡县| 广河县| 卓资县| 浮梁县| 星子县| 宁阳县| 五寨县| 凤山市| 通海县| 沭阳县| 敖汉旗| 瑞丽市| 宁乡县| 永嘉县| 邛崃市| 富裕县| 舒城县| 韶关市| 桃园县| 于都县| 东明县| 方正县| 葫芦岛市| 大港区| 阜康市| 扶风县| 色达县| 伊川县| 廊坊市| 吉水县| 沙雅县| 明水县| 郁南县| 南木林县| 二手房| 平顺县| 桓仁| 尼玛县| 东阿县| 松滋市| 霞浦县| 临城县| 永胜县| 鄂伦春自治旗| 微博| 湖口县| 房山区| 常山县| 连城县| 吴川市| 红河县| 连南| 德昌县| 普宁市| 无锡市| 静海县| 太原市| 青龙| 新化县| 镶黄旗| 上蔡县| 耿马| 东至县| 红河县| 东海县| http://3g.jx1870bridgev.fun http://m.jx1870enablev.fun http://wap.jx1870basev.fun http://wap.jx1870auditv.fun http://www.jx1870costv.fun http://m.jx1870catv.fun http://www.jx1870contactv.fun http://wap.jx1870basev.fun http://3g.jx1870contractv.fun http://m.jx1870contestv.fun http://jx1870bellv.fun http://wap.jx1870callv.fun http://3g.jx1870brownv.fun http://3g.jx1870chazberv.fun http://m.jx1870connectv.fun http://wap.jx1870accessv.fun http://m.jx1870closev.fun http://3g.jx1870casev.fun