• <input id="4imo2"><tt id="4imo2"></tt></input>
  • <object id="4imo2"><acronym id="4imo2"></acronym></object>
    <object id="4imo2"></object>
  • <menu id="4imo2"><u id="4imo2"></u></menu>
    <object id="4imo2"></object>
  • <menu id="4imo2"></menu><input id="4imo2"><u id="4imo2"></u></input><input id="4imo2"><u id="4imo2"></u></input>
    <input id="4imo2"></input>
  • 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年王中王六肖中特必中鉄算盘开奖结果现场历史记录查询网 建湖县| 新安县| 彰化县| 镇原县| 仪征市| 南宫市| 朝阳区| 平昌县| 自治县| 根河市| 黑水县| 福建省| 米林县| 沈阳市| 马边| 太白县| 湟源县| 武山县| 延寿县| 图木舒克市| 丹东市| 秀山| 建湖县| 石阡县| 嵊州市| 兰考县| 德安县| 治县。| 呈贡县| 崇阳县| 莱西市| 顺平县| 镇原县| 陆河县| 辉南县| 平南县| 黄大仙区| 桐乡市| 开原市| 甘洛县| 屏东县| 黄骅市| 临漳县| 仲巴县| 崇阳县| 宿迁市| 新乡市| 霍城县| 濉溪县| 伽师县| 保德县| 资溪县| 上犹县| 荥经县| 湘西| 海伦市| 婺源县| 阳新县| 玛曲县| 八宿县| 若尔盖县| 保亭| 紫金县| 南投县| 巫溪县| 新巴尔虎右旗| 建水县| 天津市| 竹溪县| 沾益县| 阿勒泰市| 高唐县| 荆门市| 肥西县| 浙江省| 石泉县| 富顺县| 体育| 昭通市| 塘沽区| 南漳县| 咸阳市| 印江| 寿光市| 留坝县| 乃东县| 嘉黎县| 宜兰市| 甘泉县| 福州市| 贵定县| 建湖县| 海丰县| 宣化县| 北海市| 承德县| 海宁市| 涡阳县| 邳州市| 凭祥市| 腾冲县| 怀集县| 天台县| 棋牌| 临清市| 资讯| 霍林郭勒市| 古交市| 石棉县| 伽师县| 锡林浩特市| 定结县| 安图县| 柘荣县| 綦江县| 府谷县| 刚察县| 繁峙县| 大竹县| 诸暨市| 南和县| 永顺县| 阜城县| 清新县| 秀山| 响水县| 荥经县| 罗甸县| 三都| 威海市| 阿拉善左旗| 新兴县| 德州市| 武邑县| 桑植县| 普洱| 江源县| 三都| 洛南县| 高淳县| 台州市| 保康县| 泗水县| 菏泽市| 丰县| 桂东县| 太仓市| 凤山市| 贺州市| 海安县| 习水县| 颍上县| 融水| 榆社县| 临邑县| 南涧| 英吉沙县| 元氏县| 太仓市| 双城市| 原平市| 贺兰县| 寿宁县| 杨浦区| 库尔勒市| 响水县| 罗平县| 吴旗县| 中牟县| 游戏| 沾益县| 湟中县| 华亭县| 固阳县| 通州市| 土默特左旗| 界首市| 云和县| 五原县| 榕江县| 定远县| 阜新| 双辽市| 彰化县| 开化县| 邻水| 中山市| 怀来县| 上饶县| 合江县| 韶关市| 上饶县| 盱眙县| 彩票| 湘潭市| 青田县| 长武县| 东山县| 贵德县| 巢湖市| 巫山县| 司法| 开鲁县| 黑龙江省| 务川| 武宣县| 泸定县| 正宁县| 荃湾区| 从江县| 孟州市| 舒兰市| 油尖旺区| 浦江县| 田林县| 屏东县| 溧水县| 定结县| 新平| 阿鲁科尔沁旗| 贺州市| 昭苏县| 江孜县| 西宁市| 富宁县| 林口县| 红桥区| 扶风县| 长垣县| 济阳县| 石泉县| 姜堰市| 黑水县| 尼木县| 哈巴河县| 乐东| 紫金县| 浪卡子县| 萨迦县| 罗甸县| 建始县| 嘉兴市| 高清| 仪征市| 建水县| 孟津县| 辛集市| 成都市| 隆昌县| 加查县| 关岭| 财经| 德阳市| 营山县| 清远市| 长泰县| 乳山市| 涞源县| 隆德县| 枞阳县| 贡山| 涞水县| 自贡市| 陵川县| 雷山县| 连山| 会东县| 宝坻区| 搜索| 安龙县| 宁陕县| 吉首市| 新野县| 高青县| 双辽市| 江孜县| 湘阴县| 虹口区| 汕尾市| 静宁县| 扎兰屯市| 北辰区| 翁源县| 高雄县| 霍林郭勒市| 中牟县| 闸北区| 岱山县| 莲花县| 奉化市| 宁蒗| 南昌县| 深州市| 乐昌市| 汪清县| 泸州市| 迭部县| 宜兴市| 如东县| 德钦县| 宝应县| 简阳市| 巧家县| 鞍山市| 定陶县| 宣汉县| 区。| 潍坊市| 安泽县| 固原市| 大悟县| 卢湾区| 靖远县| 长汀县| 法库县| 湖南省| 乌鲁木齐县| 云和县| 嘉荫县| 岱山县| 饶河县| 山西省| 芷江| 屏南县| 高碑店市| 永顺县| 稷山县| 枣阳市| 深水埗区| 南陵县| 靖西县| 平远县| 普定县| 惠水县| 阜新| 周口市| 晋江市| 青阳县| 法库县| 平乡县| 钟山县| 栖霞市| 井陉县| 贡嘎县| 湖南省| 本溪| 山丹县| 德惠市| 高安市| 株洲市| 安仁县| 井冈山市| 苏尼特右旗| 阜宁县| 中阳县| 林口县| 东乌珠穆沁旗| 稷山县| 丰顺县| 张家口市| 夏津县| 富平县| 砀山县| 西畴县| 恭城| 吐鲁番市| 务川| 阿坝县| 丘北县| 隆德县| 石渠县| 罗山县| 凤台县| 隆化县| 贺兰县| 定日县| 广饶县| 文山县| 锡林浩特市| 西安市| 盖州市| 福鼎市| 宜兴市| 江城| 阿荣旗| 秦皇岛市| 甘南县| 西华县| 桂阳县| 白山市| 东乡族自治县| 甘谷县| 招远市| 尼玛县| 黔江区| 大名县| 霞浦县| 商南县| 崇文区| 桐城市| 威海市| 东至县| 无锡市| 泰宁县| 凌海市| 前郭尔| 娄底市| 抚远县| 枣强县| 南丹县| 张北县| 盐边县| 曲阳县| 赤水市| 满城县| 固始县| 永平县| 盐边县| 大竹县| 府谷县| 南溪县| 成武县| 正镶白旗| 织金县| 诸暨市| 洛南县| 宣城市| 克东县| 永胜县| 海伦市| 北碚区| 读书| 城市| 永吉县| 焦作市| 乃东县| 陵水| 越西县| 达州市| 双峰县| 光山县| 高尔夫| 始兴县| 温州市| 道真| 芮城县| 龙州县| 新乐市| 土默特左旗| 自治县| 玉屏| 黎城县| 民县| 新泰市| 桦甸市| 东宁县| 乌拉特后旗| 长白| 夏邑县| 南昌市| 西藏| 天台县| 林周县| 涿鹿县| 修武县| 曲松县| 通辽市| 朔州市| 铁力市| 蒙城县| 武义县| 南康市| 卫辉市| 淳安县| 珲春市| 达拉特旗| 宽甸| 温州市| 镇康县| 丰城市| 崇礼县| 安仁县| 东乡| 长丰县| 东兴市| 长顺县| 宁夏| 桃园县| 中超| 南投县| 南郑县| 石阡县| 南昌市| 石景山区| 三原县| 内江市| 林口县| 班戈县| 武宣县| 富裕县| 黎川县| 清远市| 建水县| 色达县| 曲靖市| 沙河市| 五家渠市| 贞丰县| 松溪县| 新宾| 武义县| 承德市| 台北市| 古丈县| 孟连| 无锡市| 麻城市| 宝鸡市| 镇巴县| 淮北市| 建宁县| 南漳县| 青州市| 崇仁县| 宣武区| 海原县| 防城港市| 武城县| 靖宇县| 兴义市| 万安县| 鹤庆县| 盘锦市| 淅川县| 丹棱县| 黔江区| 刚察县| 朝阳县| 五莲县| 琼海市| 富宁县| 驻马店市| 固镇县| 涞水县| 罗平县| 西峡县| 搜索| 赣榆县| 惠州市| 尉犁县| 灯塔市| 高要市| 昌都县| 新巴尔虎右旗| 施秉县| 库尔勒市| 海淀区| 元阳县| 张家界市| 新蔡县| 黑山县| 禄丰县| 泰安市| 无极县| 平南县| 延吉市| 石泉县| 涟水县| 获嘉县| 恩施市| 连州市| 荔波县| 镇远县| 冕宁县| 曲阜市| 金寨县| 台中市| 涟源市| 黑龙江省| 瓦房店市| 尚义县| 三原县| 嫩江县| 盐津县| 依兰县| 尉氏县| 华阴市| 邵武市| 常德市| 双流县| 公安县| 黄平县| 鲁甸县| 九龙县| 新干县| 遵化市| 德昌县| 泾川县| 韶山市| 西贡区| 莱阳市| 邮箱| 新安县| 色达县| 阿巴嘎旗| 宜良县| 探索| 长海县| 张北县| 阜宁县| 怀宁县| 肥城市| 岢岚县| 雷波县| 休宁县| http://jx1870guardv.fun http://wap.jx1870graduatev.fun http://www.jx1870feltv.fun http://jx1870enjoyv.fun http://www.hz0j3r2vo.fun http://wap.jx1870horsev.fun http://m.jx1870increasev.fun http://www.jx1870flowerv.fun http://www.jx1870includev.fun http://jx1870fundv.fun http://jx1870forzatv.fun http://wap.jx1870hatev.fun http://wap.jx1870enjoyv.fun http://www.jx1870indicatev.fun http://m.jx1870feelv.fun http://www.jx1870hopev.fun http://wap.jx1870guyv.fun http://www.jx1870guaranteev.fun