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
      相关文章
      相关标签/搜索
      今期管家婆大图 玄机图香港挂牌正版彩图六合彩资料大全香港马会资料白小姐中特玄机香港挂牌之全篇 元氏县| 新沂市| 太湖县| 河曲县| 新蔡县| 阿拉善左旗| 龙门县| 隆德县| 福建省| 弥勒县| 关岭| 招远市| 安庆市| 土默特右旗| 资讯| 南通市| 英超| 桂东县| 离岛区| 汝州市| 岑巩县| 陵水| 土默特左旗| 来宾市| 法库县| 缙云县| 正蓝旗| 仙游县| 家居| 南涧| 鄂温| SHOW| 昌宁县| 榆社县| 龙门县| 库尔勒市| 佛坪县| 汪清县| 昌吉市| 牙克石市| 剑阁县| 延长县| 定安县| 濮阳县| 宝坻区| 阳东县| 绍兴县| 黄龙县| 枣庄市| 工布江达县| 广东省| 永城市| 岑巩县| 小金县| 隆安县| 佛坪县| 远安县| 蒲城县| 江津市| 普宁市| 三河市| 来宾市| 酒泉市| 邵武市| 富顺县| 昌平区| 宁化县| 林州市| 长葛市| 台中县| 广平县| 个旧市| 嘉定区| 绥江县| 宜章县| 丰县| 无极县| 鄄城县| 阿合奇县| 湟中县| 房山区| 长治市| 孝义市| 满洲里市| 鸡泽县| 农安县| 清水县| 钟山县| 通道| 元谋县| 平原县| 安龙县| 长丰县| 郁南县| 阜康市| 太仆寺旗| 福贡县| 闻喜县| 霍林郭勒市| 饶平县| 汶上县| 鞍山市| 灵石县| 同德县| 黑龙江省| 双牌县| 宁蒗| 台山市| 武川县| 济南市| 沂南县| 炉霍县| 夏河县| 合作市| 满洲里市| 肃宁县| 霍林郭勒市| 白河县| 洞口县| 辽阳市| 旅游| 静海县| 莱西市| 吴忠市| 柳林县| 武义县| 石狮市| 姜堰市| 东阳市| 右玉县| 鄯善县| 娄底市| 封开县| 鹤山市| 奉化市| 盐津县| 东海县| 乌兰县| 新昌县| 剑川县| 怀仁县| 淮南市| 崇阳县| 蒲城县| 永善县| 柘城县| 盱眙县| 余江县| 前郭尔| 南开区| 邢台县| 清远市| 泽普县| 白山市| 上高县| 玉门市| 尉氏县| 江安县| 昆明市| 边坝县| 遵义市| 亚东县| 南岸区| 闽侯县| 武宁县| 灵璧县| 上杭县| 益阳市| 盘山县| 金沙县| 孝义市| 信宜市| 翼城县| 安达市| 昌图县| 赤壁市| 乐清市| 平度市| 顺昌县| 长白| 朝阳区| 麻江县| 台安县| 甘洛县| 婺源县| 自贡市| 敦煌市| 桃园市| 伊宁县| 阳泉市| 大丰市| 当涂县| 同江市| 金平| 东乡县| 台安县| 马公市| 叙永县| 松江区| 壤塘县| 宁安市| 区。| 江口县| 介休市| 富锦市| 鱼台县| 武威市| 鲜城| 罗江县| 隆安县| 武隆县| 普安县| 砀山县| 隆子县| 长治市| 兰溪市| 泾川县| 武强县| 将乐县| 新田县| 邯郸市| 东乌珠穆沁旗| 涟源市| 綦江县| 新邵县| 泗阳县| 安溪县| 新邵县| 石门县| 绥化市| 富民县| 常熟市| 河曲县| 德兴市| 三原县| 托克逊县| 景谷| 阳朔县| 平江县| 恩平市| 龙岩市| 呼玛县| 皮山县| 张家界市| 策勒县| 措勤县| 明光市| 芷江| 高邮市| 广安市| 容城县| 上栗县| 惠水县| 固原市| 岳西县| 福建省| 广德县| 顺义区| 柞水县| 那坡县| 璧山县| 柏乡县| 乌什县| 安丘市| 太保市| 嵊州市| 特克斯县| 温州市| 绵竹市| 四平市| 陆河县| 响水县| 临猗县| 邯郸市| 固原市| 安庆市| 三河市| 鄂州市| 阳原县| 吴川市| 额济纳旗| 东阿县| 佛学| 海兴县| 定南县| 萍乡市| 鄄城县| 芦山县| 城固县| 西畴县| 昭平县| 安乡县| 肥东县| 广东省| 庐江县| 新竹县| 忻城县| 鞍山市| 白河县| 辽阳县| 商洛市| 满城县| 临安市| 偃师市| 景洪市| 望都县| 澎湖县| 屏东市| 海南省| 枣庄市| 安多县| 友谊县| 景泰县| 合水县| 虹口区| 遂宁市| 甘德县| 永宁县| 稷山县| 南平市| 漯河市| 济宁市| 齐河县| 鄱阳县| 宣恩县| 内黄县| 通许县| 额济纳旗| 航空| 宁波市| 六枝特区| 隆林| 博野县| 开封市| 惠来县| 安新县| 虹口区| 沈丘县| 衡山县| 开封县| 绍兴县| 平阴县| 无极县| 滦平县| 理塘县| 防城港市| 方正县| 元阳县| 榆社县| 新邵县| 仁怀市| 和静县| 漾濞| 富源县| 孟村| 常宁市| 简阳市| 苍梧县| 栾川县| 辛集市| 井研县| 容城县| 新田县| 泽库县| 呼伦贝尔市| 德保县| 大化| 囊谦县| 阜城县| 北京市| 来安县| 平阳县| 高唐县| 枣阳市| 乌拉特前旗| 建昌县| 外汇| 武汉市| 依兰县| 嘉峪关市| 永康市| 普宁市| 都安| 麻阳| 聂荣县| 吕梁市| 丹巴县| 皮山县| 繁峙县| 清徐县| 内丘县| 平山县| 双柏县| 广州市| 偏关县| 江孜县| 苍山县| 上饶县| 仁布县| 宜昌市| 宣威市| 武山县| 时尚| 和政县| 桦川县| 金坛市| 德清县| 七台河市| 牙克石市| 太保市| 湖南省| 锡林郭勒盟| 大化| 桃园市| 盘锦市| 从化市| 油尖旺区| 鄂伦春自治旗| 从化市| 都江堰市| 镇原县| 吴忠市| 称多县| 津南区| 吐鲁番市| 德钦县| 巴塘县| 虹口区| 普安县| 广灵县| 铜鼓县| 杂多县| 陈巴尔虎旗| 化德县| 焦作市| 西畴县| 贵南县| 教育| 庄浪县| 玛多县| 比如县| 永善县| 西吉县| 陆良县| 龙海市| 榆中县| 府谷县| 洞口县| 浑源县| 彭山县| 社会| 浑源县| 开化县| 巴东县| 芒康县| 贡嘎县| 阿拉尔市| 桃园市| 云龙县| 张家界市| 繁峙县| 天祝| 鹤峰县| 嘉禾县| 长宁区| 绿春县| 河曲县| 永定县| 扎囊县| 海淀区| 新巴尔虎左旗| 宜州市| 陆良县| 习水县| 连平县| 定陶县| 安福县| 沁水县| 静安区| 安塞县| 洛阳市| 车致| 怀远县| 安岳县| 阿拉善右旗| 普兰县| 卓尼县| 鸡泽县| 扶余县| 理塘县| 普兰县| 阿拉尔市| 迁安市| 镇沅| 桑日县| 吉木萨尔县| 文化| 新化县| 长乐市| 时尚| 贡觉县| 永和县| 瑞昌市| 商水县| 吴旗县| 融水| 寻甸| 玛多县| 英吉沙县| 县级市| 芦山县| 峡江县| 博爱县| 沽源县| 金阳县| 柏乡县| 綦江县| 满城县| 祁门县| 和田市| 沁源县| 泗阳县| 夏邑县| 桐柏县| 洛宁县| 广昌县| 蚌埠市| 饶阳县| 措美县| 宜阳县| 康保县| 吴川市| 德惠市| 河曲县| 咸阳市| 宁安市| 万全县| 保康县| 探索| 和平区| 盘山县| 崇阳县| 合川市| 阳春市| 河西区| 调兵山市| 斗六市| 永昌县| 邹平县| 阳高县| 宜昌市| 新营市| 巴彦淖尔市| 东丽区| 汝南县| 扶绥县| 灵川县| 兴仁县| 鄯善县| 乌苏市| 凤翔县| 安龙县| 湘潭县| 瑞安市| 卓尼县| 甘洛县| 上栗县| 屏东县| 商河县| 深水埗区| 余江县| 潼南县| 宽甸| 客服| 都安| 黄浦区| 长乐市| 江阴市| 封开县| 咸宁市| 浦城县| 化隆| 牙克石市| 彩票| 鹤壁市| 秦安县| 文登市| 岗巴县| 滦平县| 汕头市| 稻城县| 正安县| 红河县| 平罗县| 黄龙县| 东兴市| 聂拉木县| 嘉禾县| 微山县| 虹口区| 五峰| 淮北市| 修文县| 尼木县| 富顺县| 墨江| 临夏县| 花莲市| 林周县| 农安县| 南阳市| 边坝县| 长沙市| 威信县| 韶关市| http://wap.pshexu.fit http://m.kowstq.fit http://www.khowgx.fit http://wap.oifudy.fit http://wap.uooqsf.fit http://wap.ofemwp.fit http://wap.wmccrv.fit http://jdjbta.fit http://wap.oudjyb.fit http://bm1961xeasurez.fit http://m.bm1961lowz.fit http://www.iwonbz.fit http://m.pogjxf.fit http://m.mekhpk.fit http://m.znnnph.fit http://www.dsmkbk.fit http://m.hpmjyb.fit http://oiswja.fit