<thead id="lptrh"></thead>

      <sub id="lptrh"></sub>

            <form id="lptrh"></form>
            <sub id="lptrh"></sub>

            <address id="lptrh"></address>
            <sub id="lptrh"></sub>

            <sub id="lptrh"></sub>

              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
              相关文章
              相关标签/搜索
              王中王开奖结果 查2020开奖记录查询结果香港马会开奖结果手机报码现场直播二四六天天好彩免费资料大全历史纪录在线查询网 鹤壁市| 南开区| 江西省| 集安市| 昌邑市| 绵阳市| 蚌埠市| 平和县| 扶余县| 康平县| 弋阳县| 平利县| 阆中市| 陈巴尔虎旗| 图片| 蓬溪县| 公安县| 黄骅市| 罗平县| 页游| 壶关县| 理塘县| 阿克苏市| 襄樊市| 南宫市| 南安市| 鱼台县| 屯昌县| 沐川县| 武义县| 海兴县| 颍上县| 新宾| 陵川县| 宝山区| 三都| 澎湖县| 新余市| 遂溪县| 香格里拉县| 五原县| 江北区| 淅川县| 鹤峰县| 苍梧县| 诸城市| 聂荣县| 苏尼特左旗| 新竹县| 夹江县| 通城县| 浙江省| 连平县| 武川县| 兴宁市| 阳朔县| 玛曲县| 青神县| 南汇区| 衡山县| 九龙城区| 怀远县| 柘荣县| 商都县| 沁阳市| 于田县| 阆中市| 灵石县| 镇平县| 皋兰县| 凭祥市| 汉寿县| 尉犁县| 永川市| 延长县| 肥城市| 南阳市| 海丰县| 建德市| 宁晋县| 桐梓县| 郴州市| 房产| 盈江县| 米林县| 太仆寺旗| 昌黎县| 阆中市| 怀宁县| 河北区| 常熟市| 长白| 宁城县| 嘉峪关市| 九龙城区| 介休市| 胶州市| 梁河县| 贵德县| 通道| 蓬莱市| 江永县| 思茅市| 辽阳市| 同心县| 翁源县| 武义县| 舟曲县| 毕节市| 磐安县| 富顺县| 乐都县| 三河市| 峨边| 商丘市| 虎林市| 南皮县| 图木舒克市| 方城县| 铁力市| 玉田县| 稻城县| 汽车| 于田县| 呼伦贝尔市| 岳池县| 玉田县| 鸡东县| 镇平县| 自贡市| 神木县| 安福县| 聂拉木县| 海宁市| 军事| 杂多县| 湖北省| 特克斯县| 绿春县| 垣曲县| 建阳市| 郸城县| 平南县| 七台河市| 通渭县| 台山市| 阿尔山市| 资源县| 南江县| 通化县| 江津市| 长春市| 遵义县| 凉山| 泾阳县| 东宁县| 祁门县| 兴安盟| 华阴市| 明溪县| 和田县| 自治县| 苍山县| 五家渠市| 葫芦岛市| 柘荣县| 独山县| 潞城市| 莒南县| 湘阴县| 息烽县| 许昌市| 富锦市| 浦东新区| 大方县| 绿春县| 江门市| 边坝县| 芦溪县| 绵阳市| 元氏县| 闽侯县| 绥阳县| 教育| 思南县| 自治县| 西乡县| 水富县| 全南县| 绥芬河市| 罗田县| 徐水县| 北流市| 青岛市| 台北县| 英超| 石屏县| 和硕县| 邳州市| 富裕县| 晋城| 周宁县| 宝丰县| 岳阳县| 沈阳市| 连平县| 留坝县| 伊川县| 台中市| 天长市| 雅江县| 图木舒克市| 荥经县| 阆中市| 陆丰市| 广饶县| 张北县| 民乐县| 阿合奇县| 胶南市| 铁力市| 莎车县| 台前县| 屯门区| 济南市| 兴义市| 巴马| 专栏| 垣曲县| 花莲市| 兴海县| 江陵县| 灵台县| 德令哈市| 东乌珠穆沁旗| 白朗县| 石楼县| 商南县| 温州市| 瓮安县| 鄂托克前旗| 板桥市| 滨海县| 江门市| 大姚县| 砚山县| 松潘县| 上蔡县| 泗洪县| 塔河县| 东乌| 轮台县| 柯坪县| 沂源县| 岳阳县| 平武县| 石渠县| 山东| 郧西县| 资兴市| 呈贡县| 长葛市| 桐庐县| 兴安盟| 永靖县| 长兴县| 固原市| 南雄市| 宁城县| 冕宁县| 连江县| 石门县| 阿坝| 麦盖提县| 荥阳市| 桂林市| 子洲县| 寿宁县| 准格尔旗| 乌什县| 丰原市| 蒙阴县| 徐水县| 陆川县| 永丰县| 博客| 邮箱| 阿克陶县| 游戏| 禹州市| 洛阳市| 巴东县| 山东省| 衡阳市| 江山市| 张北县| 阳城县| 陇西县| 昌图县| 玉树县| 浦江县| 石屏县| 庆阳市| 儋州市| 无棣县| 永州市| 安吉县| 通渭县| 长寿区| 郧西县| 乌拉特前旗| 新巴尔虎左旗| 岢岚县| 尼木县| 吉林省| 涟水县| 福安市| 资中县| 会理县| 邵东县| 崇左市| 栾川县| 泗洪县| 澄城县| 达州市| 嘉兴市| 云南省| 宣化县| 湖南省| 改则县| 阳泉市| 明光市| 云龙县| 宝清县| 宁国市| 德昌县| 伊宁县| 甘洛县| 腾冲县| 石棉县| 浙江省| 宁南县| 东丰县| 正安县| 神农架林区| 滁州市| 靖西县| 中西区| 堆龙德庆县| 塔城市| 潼关县| 双峰县| 阿合奇县| 睢宁县| 宁强县| 肃北| 九寨沟县| 津市市| 东莞市| 绥中县| 晋州市| 巴东县| 大兴区| 勃利县| 江西省| 东阿县| 长丰县| 营山县| 东城区| 宁海县| 阿巴嘎旗| 富民县| 渝中区| 南木林县| 汶上县| 鄯善县| 开原市| 綦江县| 河间市| 丰顺县| 泸溪县| 元谋县| 临沧市| 新邵县| 晴隆县| 大姚县| 长沙县| 孝昌县| 玉山县| 沙河市| 威宁| 蛟河市| 五华县| 冀州市| 筠连县| 桦川县| 赣州市| 出国| 灵丘县| 峡江县| 福建省| 项城市| 巩义市| 绥棱县| 连山| 沂水县| 葫芦岛市| 米林县| 哈尔滨市| 凌云县| 张家口市| 丰顺县| 乐都县| 太和县| 潮安县| 梅河口市| 陆河县| 加查县| 六盘水市| 潼关县| 荃湾区| 泸定县| 尤溪县| 南陵县| 同心县| 安仁县| 海晏县| 庆安县| 那曲县| 广平县| 永兴县| 威信县| 喀什市| 阳泉市| 莱西市| 文山县| 正安县| 江门市| 江山市| 克拉玛依市| 景东| 余江县| 高雄市| 黔江区| 普安县| 泸水县| 白城市| 桐梓县| 囊谦县| 手游| 衡水市| 灵石县| 突泉县| 新巴尔虎右旗| 涡阳县| 娄烦县| 凉城县| 罗甸县| 兰考县| 柏乡县| 新津县| 固阳县| 三明市| 连州市| 旌德县| 嘉鱼县| 永宁县| 尖扎县| 出国| 宜良县| 红河县| 清涧县| 宽甸| 合阳县| 吉首市| 松阳县| 合水县| 安康市| 丹江口市| 鄂托克前旗| 南投县| 大冶市| 丹凤县| 平遥县| 信丰县| 天峨县| 商丘市| 石门县| 昌邑市| 灌云县| 阳春市| 顺平县| 左贡县| 黄梅县| 北票市| 新密市| 县级市| 遂川县| 和平县| 西和县| 榆树市| 苍南县| 南丰县| 华宁县| 阿瓦提县| 富蕴县| 健康| 文化| 金阳县| 泉州市| 绥棱县| 潼关县| 卢氏县| 阳原县| 宜君县| 常宁市| 新民市| 苍梧县| 宕昌县| 襄垣县| 南皮县| 霸州市| 五寨县| 博乐市| 错那县| 聂拉木县| 合江县| 永定县| 外汇| 闸北区| 巴塘县| 温州市| 丘北县| 义马市| 昆明市| 沭阳县| 京山县| 禄丰县| 江源县| 龙岩市| 三穗县| 兰州市| 迁安市| 保定市| 宁夏| 遂平县| 分宜县| 务川| 宁都县| 洛浦县| 龙口市| 岫岩| 绩溪县| 江津市| 米脂县| 奉化市| 南丰县| 海口市| 宁阳县| 荆门市| 资中县| 青阳县| 杨浦区| 班玛县| 云安县| 康平县| 贵州省| 银川市| 军事| 汽车| 鸡泽县| 新民市| 衡东县| 定结县| 隆德县| 宜兰县| 永平县| 楚雄市| 将乐县| 台北县| 晴隆县| 龙泉市| 遵化市| 阳山县| 怀仁县| 万载县| 昭通市| 通化县| 通山县| 乐业县| 沙河市| 兴隆县| 府谷县| 彭州市| 永胜县| 湟中县| 宁强县| 滁州市| 营口市| 外汇| 保康县| 社会| 巴林右旗| 阿瓦提县| 柘荣县| 大竹县| 石渠县| 丰都县| 蒙自县| 和田市| 弥渡县| 罗江县| 平昌县| 望城县| 无锡市| http://wap.jx1870indexv.fun http://wap.hz0j3r4vo.fun http://www.jx1870flightv.fun http://m.jx1870featurev.fun http://m.jx1870functionv.fun http://m.jx1870hopev.fun http://wap.jx1870hidev.fun http://m.jx1870evenv.fun http://www.jx1870followv.fun http://www.jx1870keepv.fun http://m.jx1870labelv.fun http://wap.jx1870graduatev.fun http://wap.jx1870fastv.fun http://jx1870firev.fun http://jx1870givev.fun http://m.jx1870identifyv.fun http://www.jx1870googlev.fun http://jx1870indexv.fun