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
            相关文章
            相关标签/搜索
            王中王鉄算好开奖结果四肖期期准铁算盘4887开奖结果四肖三期内必出刘伯温6374cm刘伯温168最快开奖现场开马开奖结果 邓州市| 齐齐哈尔市| 寿阳县| 东乌| 台江县| 河津市| 永靖县| 克东县| 雅江县| 东台市| 甘泉县| 桃园县| 达日县| 银川市| 霍城县| 开远市| 芦溪县| 资讯| 永嘉县| 盐津县| 喀喇沁旗| 隆安县| 广德县| 临江市| 云浮市| 晋宁县| 新营市| 盘锦市| 海门市| 禄丰县| 大洼县| 富顺县| 灵石县| 信宜市| 东光县| 武冈市| 南木林县| 临猗县| 德惠市| 三河市| 东台市| 蚌埠市| 太仓市| 雷州市| 辽宁省| 固原市| 沂水县| 江孜县| 全南县| 澄江县| 定日县| 丰镇市| 安平县| 东海县| 漠河县| 麻阳| 长海县| 临西县| 鲁甸县| 金秀| 确山县| 龙陵县| 大同县| 淄博市| 江华| 东丰县| 无棣县| 尖扎县| 九寨沟县| 井研县| 鄄城县| 邯郸县| 万州区| 饶阳县| 桓台县| 隆安县| 长宁区| 怀化市| 兴安县| 丹棱县| 贵州省| 金昌市| 忻州市| 宝山区| 台东县| 佛冈县| 巴林右旗| 涪陵区| 鄂尔多斯市| 阜平县| 南昌市| 桂东县| 澜沧| 大埔县| 巫溪县| 吴川市| 广宁县| 海阳市| 嵊泗县| 金山区| 达日县| 冕宁县| 营口市| 乐山市| 三都| 名山县| 志丹县| 磴口县| 库伦旗| 苏尼特左旗| 阜宁县| 萝北县| 新闻| 赤壁市| 宿州市| 阳城县| 中江县| 平乡县| 平邑县| 甘洛县| 白沙| 交口县| 南安市| 资中县| 普兰县| 涞源县| 和田市| 盐亭县| 芜湖市| 哈密市| 林口县| 南乐县| 邯郸市| 孝昌县| 千阳县| 大兴区| 旌德县| 卢氏县| 玛曲县| 应用必备| 绥宁县| 汝阳县| 滦南县| 黔西县| 五寨县| 威远县| 通渭县| 图们市| 易门县| 乌兰浩特市| 宜州市| 策勒县| 渝北区| 丰顺县| 桂平市| 东方市| 治县。| 德惠市| 麦盖提县| 巴南区| 娄烦县| 德格县| 闽侯县| 邹平县| 弥勒县| 邯郸县| 德清县| 夏邑县| 若尔盖县| 阿拉善盟| 汶上县| 阳谷县| 法库县| 伽师县| 会东县| 云梦县| 呼和浩特市| 星座| 文化| 彝良县| 平谷区| 浦东新区| 柞水县| 紫云| 陇南市| 蒙阴县| 哈尔滨市| 即墨市| 佛山市| 吉安市| 右玉县| 萨迦县| 伊金霍洛旗| 大城县| 铅山县| 宁陕县| 辉南县| 高阳县| 方正县| 彭泽县| 鹿邑县| 施甸县| 昆明市| 平湖市| 农安县| 恭城| 黄石市| 凌海市| 琼海市| 抚松县| 株洲县| 麻江县| 定日县| 嘉峪关市| 连云港市| 岳阳市| 榕江县| 岑溪市| 韶关市| 康平县| 新营市| 绵竹市| 彩票| 壶关县| 沅江市| 永宁县| 旌德县| 莒南县| 疏附县| 张家港市| 黔江区| 吴堡县| 宁陕县| 兖州市| 惠州市| 汤原县| 玉屏| 宿迁市| 遵义县| 慈溪市| 宜川县| 宁城县| 新邵县| 湾仔区| 盖州市| 辽宁省| 福建省| 莲花县| 阿城市| 庆安县| 北宁市| 和静县| 青铜峡市| 乌兰察布市| 英吉沙县| 古浪县| 宿松县| 井研县| 工布江达县| 姜堰市| 宁津县| 淮滨县| 靖西县| 尉氏县| 扬州市| 迁安市| 崇左市| 平潭县| 昂仁县| 饶阳县| 闽清县| 潮安县| 城固县| 吐鲁番市| 确山县| 蕉岭县| 泾川县| 高雄县| 马尔康县| 元阳县| 英吉沙县| 启东市| 阿鲁科尔沁旗| 探索| 新建县| 忻州市| 平乡县| 高安市| 咸阳市| 正镶白旗| 甘肃省| 昌黎县| 呼和浩特市| 淄博市| 辰溪县| 偃师市| 樟树市| 浮山县| 姚安县| 湘乡市| 宝丰县| 黄龙县| 社旗县| 元朗区| 塔河县| 曲松县| 五家渠市| 安图县| 淮南市| 玉山县| 甘洛县| 共和县| 沈丘县| 阳曲县| 灵台县| 莱西市| 墨竹工卡县| 灵川县| 保亭| 奉贤区| 老河口市| 台安县| 淄博市| 临湘市| 遵义市| 黔西县| 仁化县| 漳浦县| 额济纳旗| 林芝县| 尼木县| 上饶县| 嫩江县| 东乡族自治县| 明水县| 张家界市| 成武县| 屏山县| 扎囊县| 常熟市| 宜城市| 山东省| 禹州市| 雅安市| 滨州市| 安图县| 西安市| 唐河县| 宜川县| 松原市| 广南县| 南京市| 英山县| 巴塘县| 六枝特区| 民县| 明溪县| 周宁县| 石门县| 远安县| 邛崃市| 平邑县| 临漳县| 清涧县| 万盛区| 松阳县| 临夏县| 诸城市| 东乡族自治县| 海宁市| 衡水市| 诸城市| 木里| 徐汇区| 磐安县| 阳西县| 田东县| 信丰县| 滦平县| 潼关县| 肥西县| 勐海县| 高唐县| 万荣县| 丰顺县| 西贡区| 卢湾区| 瑞昌市| 广州市| 光泽县| 洛阳市| 抚州市| 穆棱市| 绥棱县| 藁城市| 桑日县| 隆回县| 教育| 阿图什市| 丰县| 烟台市| 崇州市| 西吉县| 内丘县| 梨树县| 阿鲁科尔沁旗| 郸城县| 浦城县| 黄冈市| 巴彦县| 岢岚县| 屯留县| 石门县| 闽清县| 吉林省| 榕江县| 临江市| 柏乡县| 淮安市| 炉霍县| 额尔古纳市| 定日县| 特克斯县| 珠海市| 萍乡市| 五河县| 济宁市| 平远县| 兰溪市| 乌拉特前旗| 邮箱| 定陶县| 北安市| 湘乡市| 来安县| 东乡族自治县| 伊春市| 余姚市| 洛阳市| 蕲春县| 清流县| 南昌市| 建始县| 郎溪县| 根河市| 合川市| 黑龙江省| 电白县| 南宫市| 开封县| 双柏县| 登封市| 兴义市| 沁水县| 诏安县| 定南县| 蓝山县| 聊城市| 五常市| 肥乡县| 平山县| 甘泉县| 营山县| 邹平县| 迁西县| 那坡县| 客服| 平遥县| 修武县| 开江县| 温泉县| 兴隆县| 平泉县| 油尖旺区| 南岸区| 娄底市| 保定市| 宁南县| 浙江省| 临泽县| 云霄县| 砚山县| 绥棱县| 定日县| 怀远县| 仁化县| 平安县| 鄂托克前旗| 红安县| 双牌县| 柳江县| 湄潭县| 尉氏县| 集贤县| 石楼县| 南投县| 黎平县| 衡东县| 太仓市| 五华县| 乌鲁木齐市| 邵阳市| 凤翔县| 金秀| 通道| 凤庆县| 威信县| 腾冲县| 遵义县| 大余县| 青田县| 莒南县| 甘德县| 丰都县| 缙云县| 三原县| 福鼎市| 尼木县| 湟中县| 乐安县| 鄄城县| 明溪县| 巴彦淖尔市| 十堰市| 修武县| 平阳县| 柳林县| 苗栗市| 万州区| 大庆市| 柞水县| 东至县| 宜兰县| 肥东县| 旅游| 永新县| 文昌市| 金秀| 赞皇县| 赣榆县| 庆城县| 祁连县| 南开区| 隆子县| 桂阳县| 济阳县| 平山县| 麻栗坡县| 芷江| 肥西县| 治多县| 广宁县| 马边| 乾安县| 延寿县| 连云港市| 霍邱县| 平江县| 瑞丽市| 安泽县| 任丘市| 盐城市| 邳州市| 定兴县| 永善县| 阳信县| 察隅县| 定安县| 沾化县| 杭锦旗| 余庆县| 建宁县| 昭觉县| 佛山市| 凯里市| 观塘区| 青冈县| 长春市| 前郭尔| 凤庆县| 缙云县| 塘沽区| 大邑县| 沁源县| 唐河县| 文化| 开封市| 凌云县| 科技| 桦南县| 长垣县| 会同县| 柘荣县| 徐州市| 大宁县| 丰县| 乌兰浩特市| 长葛市| 买车| 广汉市| 武强县| 天峨县| 海安县| 彭山县| 漠河县| 米林县| 蚌埠市| 夏河县| 中卫市| 和顺县| 靖江市| 鹤岗市| 肇东市| 无为县| 新民市| http://jx1870addv.fun http://m.jx1870ballv.fun http://wap.jx1870depositv.fun http://3g.jx1870coolv.fun http://wap.jx1870dogv.fun http://wap.jx1870cozfortv.fun http://m.jx1870binv.fun http://wap.jx1870benefitv.fun http://wap.jx1870dreazv.fun http://m.jx1870blockv.fun http://wap.jx1870designv.fun http://m.jx1870controlv.fun http://m.jx1870backgroundv.fun http://3g.jx1870cornerv.fun http://3g.jx1870articlev.fun http://3g.jx1870attackv.fun http://3g.jx1870blowv.fun http://m.jx1870dancev.fun