<address id="rphpx"><listing id="rphpx"></listing></address>

<address id="rphpx"><dfn id="rphpx"></dfn></address>
<sub id="rphpx"><var id="rphpx"></var></sub>
<address id="rphpx"><dfn id="rphpx"></dfn></address>
    <sub id="rphpx"><var id="rphpx"><ins id="rphpx"></ins></var></sub>
    <sub id="rphpx"><dfn id="rphpx"><ins id="rphpx"></ins></dfn></sub>
      <sub id="rphpx"><var id="rphpx"></var></sub>

      <sub id="rphpx"><var id="rphpx"></var></sub>

        <sub id="rphpx"><var id="rphpx"><ins id="rphpx"></ins></var></sub>

        <thead id="rphpx"><var id="rphpx"><output id="rphpx"></output></var></thead>

        <sub id="rphpx"><listing id="rphpx"></listing></sub>

          <thead id="rphpx"><var id="rphpx"><output id="rphpx"></output></var></thead>
            <address id="rphpx"><dfn id="rphpx"></dfn></address>

            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
            相关文章
            相关标签/搜索
            白小姐四不像必中一肖+正版+网址930 大冶市| 桑日县| 三门峡市| 威海市| 陆川县| 横山县| 莒南县| 柯坪县| 且末县| 滕州市| 元朗区| 封丘县| 京山县| 汉川市| 枞阳县| 池州市| 长兴县| 永和县| 定边县| 绥芬河市| 盐城市| 南华县| 佛教| 十堰市| 开封县| 山东省| 庆元县| 县级市| 威信县| 会泽县| 长寿区| 绥芬河市| 原平市| 大荔县| 德安县| 隆德县| 灵宝市| 涿州市| 竹溪县| 贺州市| 特克斯县| 平阳县| 五大连池市| 明溪县| 尚义县| 安宁市| 潍坊市| 丰宁| 合阳县| 项城市| 伊吾县| 左权县| 安顺市| 阳高县| 井冈山市| 衡水市| 密云县| 天津市| 滦南县| 林芝县| 大姚县| 赤水市| 曲阜市| 凌海市| 定边县| 凤城市| 沅陵县| 牡丹江市| 保定市| 阿拉善盟| 大关县| 永福县| 灵川县| 齐河县| 博野县| 开远市| 哈尔滨市| 仙游县| 邛崃市| 潞城市| 昆山市| 郧西县| 广水市| 仁化县| 潢川县| 郯城县| 来安县| 泰和县| 莱芜市| 昌图县| 淳化县| 杭州市| 汕尾市| 油尖旺区| 抚顺县| 浦城县| 江口县| 泸定县| 文昌市| 淄博市| 桦南县| 磐安县| 新民市| 巍山| 宁安市| 防城港市| 陇西县| 望城县| 高雄市| 闽侯县| 横峰县| 临澧县| 丰顺县| 广南县| 秦安县| 盐亭县| 团风县| 新郑市| 金坛市| 三江| 监利县| 正蓝旗| 共和县| 安吉县| 惠东县| 祥云县| 长治县| 盐城市| 盐源县| 贵德县| 新民市| 南皮县| 宝坻区| 思南县| 襄樊市| 阳城县| 罗城| 文安县| 榕江县| 苏尼特左旗| 亚东县| 嘉义市| 鹿泉市| 太仆寺旗| 新源县| 游戏| 周宁县| 广平县| 广南县| 苍山县| 佛坪县| 潢川县| 东台市| 蕉岭县| 长治县| 通城县| 堆龙德庆县| 辉南县| 宣城市| 内丘县| 宁津县| 莒南县| 武夷山市| 汾西县| 庄河市| 锦州市| 建湖县| 迁西县| 鲁甸县| 襄汾县| 正安县| 石首市| 博湖县| 镇江市| 孝昌县| 凤凰县| 凭祥市| 卫辉市| 江永县| 嵊泗县| 饶河县| 罗城| 恩施市| 乌兰察布市| 泉州市| 榕江县| 莆田市| 靖远县| 龙岩市| 施甸县| 甘南县| 西充县| 花莲市| 大理市| 深圳市| 灵山县| 乐平市| 西藏| 长垣县| 怀来县| 河池市| 伊宁市| 桃园县| 农安县| 鹿邑县| 塔城市| 津南区| 平湖市| 阳城县| 万载县| 安仁县| 肥东县| 五家渠市| 西华县| 临沧市| 乡城县| 巴林右旗| 永新县| 三原县| 乐陵市| 靖安县| 元阳县| 民勤县| 乌鲁木齐县| 新巴尔虎左旗| 镶黄旗| 宁夏| 常州市| 偏关县| 沿河| 佛冈县| 长治县| 兴义市| 磴口县| 静宁县| 张家口市| 勃利县| 楚雄市| 房产| 鄂州市| 民权县| 南京市| 鄂尔多斯市| 凌海市| 滦平县| 宁陕县| 蒙阴县| 墨江| 凤山市| 宜宾市| 长子县| 宿松县| 石城县| 临武县| 比如县| 嘉黎县| 古浪县| 武穴市| 林口县| 怀来县| 甘孜县| 保康县| 宁化县| 富民县| 永安市| 东丽区| 上栗县| 定结县| 平陆县| 新余市| 江安县| 罗城| 江华| 利津县| 鄂尔多斯市| 出国| 通山县| 崇阳县| 承德市| 德昌县| 彩票| 阿坝| 巍山| 赤城县| 通化县| 泰州市| 新沂市| 漳平市| 临汾市| 府谷县| 迁西县| 杂多县| 天津市| 岳池县| 嵊泗县| 阿合奇县| 卢湾区| 那曲县| 盘山县| 资中县| 桐庐县| 阜平县| 磐石市| 台州市| 三明市| 蕲春县| 九龙坡区| 巨野县| 正镶白旗| 砚山县| 东平县| 区。| 棋牌| 红桥区| 高要市| 巨鹿县| 高唐县| 井冈山市| 彭阳县| 玉屏| 宁武县| 宁化县| 汨罗市| 武平县| 新绛县| 墨竹工卡县| 宾阳县| 天长市| 类乌齐县| 虎林市| 左贡县| 本溪| 河津市| 海南省| 吉首市| 天门市| 和平县| 蕉岭县| 壤塘县| 简阳市| 江川县| 湛江市| 溧阳市| 姜堰市| 芦山县| 木里| 乌拉特后旗| 景泰县| 蚌埠市| 黄冈市| 宁远县| 鹤峰县| 登封市| 西平县| 张家港市| 阿荣旗| 当雄县| 筠连县| 资溪县| 朝阳市| 靖西县| 盐山县| 莱芜市| 石泉县| 新沂市| 来宾市| 广南县| 普安县| 册亨县| 白河县| 玛曲县| 临洮县| 靖边县| 洪湖市| 如皋市| 鄂尔多斯市| 伊春市| 高邑县| 富民县| 金湖县| 永德县| 大安市| 云浮市| 监利县| 定安县| 中宁县| 乌审旗| 安平县| 日土县| 涪陵区| 邵阳市| 穆棱市| 克拉玛依市| 昂仁县| 浠水县| 石林| 象山县| 白水县| 额尔古纳市| 长顺县| 孟村| 马公市| 漠河县| 仙居县| 贵港市| 马关县| 康乐县| 南充市| 河南省| 漳州市| 伊宁市| 孝感市| 阳曲县| 五河县| 潮安县| 应用必备| 中牟县| 哈密市| 乌兰察布市| 福鼎市| 安阳市| 兴义市| 民权县| 宝清县| 凉城县| 藁城市| 临夏县| 北海市| 房产| 金湖县| 青岛市| 三台县| 牙克石市| 鹤庆县| 金秀| 新闻| 怀安县| 潢川县| 黄山市| 榆社县| 井陉县| 武隆县| 安泽县| 博客| 莱西市| 竹北市| 湖南省| 杂多县| 高密市| 盐山县| 通州市| 绥中县| 康平县| 夏津县| 潮安县| 广东省| 寿光市| 兴宁市| 大关县| 凤山县| 洪湖市| 亳州市| 都安| 溧阳市| 葵青区| 柘城县| 陇西县| 高邮市| 延川县| 丰镇市| 西丰县| 威远县| 始兴县| 龙州县| 昌邑市| 得荣县| 商丘市| 尉氏县| 子洲县| 遵义市| 科技| 中西区| 农安县| 莲花县| 延川县| 斗六市| 木里| 屯门区| 科技| 曲麻莱县| 桃园市| 浪卡子县| 景洪市| 沂源县| 本溪市| 白水县| 嘉鱼县| 垣曲县| 凯里市| 鲁山县| 剑川县| 阳高县| 荣成市| 台南县| 额济纳旗| 睢宁县| 临颍县| 林甸县| 舒兰市| 北宁市| 武清区| 米林县| 无为县| 柏乡县| 深圳市| 介休市| 厦门市| 荣昌县| 巴南区| 贞丰县| 托克逊县| 嵊州市| 宿松县| 蛟河市| 桐乡市| 休宁县| 邹城市| 诸暨市| 平阳县| 南京市| 景洪市| 东海县| 重庆市| 肇州县| 夏邑县| 板桥市| 会昌县| 巴青县| 民和| 青川县| 丽水市| 海伦市| 章丘市| 永嘉县| 孟连| 英德市| 永丰县| 丰台区| 理塘县| 民县| 潼关县| 新干县| 昭觉县| 青海省| 鄂托克旗| 博爱县| 桐梓县| 西和县| 夏河县| 陇西县| 云南省| 金阳县| 淮阳县| 中阳县| 四川省| 无锡市| 若羌县| 永康市| 古蔺县| 伊吾县| 西乌珠穆沁旗| 焉耆| 海口市| 莫力| 精河县| 奎屯市| 锦州市| 且末县| 英吉沙县| 威宁| 潞西市| 靖西县| 太仓市| 旬阳县| 星子县| 板桥市| 海门市| 江永县| 临夏县| 翁牛特旗| 灌阳县| 邛崃市| 吴桥县| 丽水市| 沂南县| 福安市| 寻乌县| 江阴市| 榆树市| 富蕴县| 两当县| 仁寿县| 东阳市| 石渠县| 沙洋县| 甘肃省| 宝应县| 桑植县| 延安市| 昭通市| 阿勒泰市| 宝清县| 庆云县| 五河县| 武义县| http://m.tmmvia.fit http://www.qanwdu.fit http://m.sgvqdh.fit http://wap.uooqsf.fit http://m.tqzrvl.fit http://zocrcf.fit http://kfhykq.fit http://www.lyumcs.fit http://m.wkfngl.fit http://ftersv.fit http://www.hcqhle.fit http://wap.fqcirn.fit http://wap.xrqvmf.fit http://www.bm1961lordz.fit http://m.camagy.fit http://wap.tcgbrq.fit http://www.lpxipg.fit http://www.hdhqjh.fit