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
      相关文章
      相关标签/搜索
      香港东方心经最准马报蓝月亮免费精选资料大全-蓝月亮免费二四精选资料大全预约 南京市| 大石桥市| 涡阳县| 鄄城县| 阜南县| 比如县| 开阳县| 商河县| 工布江达县| 大姚县| 太仆寺旗| 马尔康县| 呼玛县| 巩义市| 和林格尔县| 琼结县| 沈丘县| 泽普县| 沅江市| 诸暨市| 甘泉县| 曲松县| 西宁市| 乌兰察布市| 儋州市| 民县| 云浮市| 白朗县| 德兴市| 明星| 莫力| 旌德县| 丹凤县| 莆田市| 宜城市| 应用必备| 江门市| 武宁县| 建始县| 全州县| 吉安市| 安新县| 买车| 乌恰县| 密云县| 通山县| 克山县| 惠东县| 松阳县| 乌拉特前旗| 时尚| 长治市| 杭州市| 卓尼县| 徐汇区| 阳谷县| 临沧市| 云林县| 伊宁市| 车险| 南城县| 邵阳市| 偃师市| 临泉县| 北辰区| 秭归县| 临西县| 自治县| 海阳市| 天水市| 和顺县| 衡水市| 故城县| 连南| 吉林省| 河间市| 乌鲁木齐市| 福泉市| 临猗县| 乌鲁木齐县| 崇文区| 芦溪县| 石阡县| 广宗县| 诸城市| 丰都县| 江孜县| 大城县| 应用必备| 北宁市| 翼城县| 锡林浩特市| 成安县| 万宁市| 北安市| 碌曲县| 亳州市| 海原县| 磴口县| 南澳县| 乐昌市| 常宁市| 钟山县| 谢通门县| 北京市| 伊宁市| 湘潭市| 崇礼县| 榆中县| 漳浦县| 威远县| 外汇| 登封市| 冕宁县| 资源县| 札达县| 定西市| 牡丹江市| 贵南县| 威信县| 九台市| 永靖县| 蒙阴县| 中卫市| 固始县| 石阡县| 乌兰浩特市| 新宁县| 治县。| 博白县| 玉溪市| 富宁县| 大方县| 堆龙德庆县| 犍为县| 扶沟县| 井冈山市| 自贡市| 宁河县| 会理县| 磴口县| 安徽省| 嘉祥县| 九龙县| 阿瓦提县| 齐河县| 长兴县| 荃湾区| 栾城县| 岳普湖县| 修水县| 四会市| 九龙城区| 双鸭山市| 潍坊市| 万山特区| 富宁县| 清徐县| 太仓市| 道真| 西峡县| 松溪县| 大宁县| 桃园县| 梁平县| 丹东市| 五峰| 合水县| 新宁县| 河北省| 临桂县| 边坝县| 朝阳县| 江陵县| 南岸区| 大埔县| 长沙县| 竹山县| 常山县| 张掖市| 南木林县| 卢龙县| 广汉市| 鄂托克前旗| 民丰县| 新乡县| 石嘴山市| 南和县| 江源县| 禹城市| 蒲江县| 桑日县| 前郭尔| 奈曼旗| 焦作市| 阆中市| 兴城市| 康平县| 淳化县| 获嘉县| 汾西县| 正阳县| 定兴县| 高唐县| 类乌齐县| 开江县| 隆子县| 酒泉市| 承德县| 镇安县| 西宁市| 邵东县| 韶关市| 成武县| 昌黎县| 射洪县| 弋阳县| 花莲市| 贵溪市| 金阳县| 太仓市| 当涂县| 阳信县| 色达县| 辽宁省| 枞阳县| 南雄市| 普兰店市| 新竹市| 开封市| 巴彦县| 湛江市| 海安县| 永顺县| 千阳县| 镇原县| 措勤县| 黔西| 伽师县| 福海县| 辛集市| 报价| 饶阳县| 连南| 宜兴市| 绥德县| 庆安县| 班戈县| 扶沟县| 息烽县| 临汾市| 宜章县| 崇信县| 察隅县| 贡嘎县| 循化| 穆棱市| 邮箱| 崇左市| 江门市| 鄂托克前旗| 梅河口市| 定安县| 瑞金市| 安新县| 苍梧县| 桦南县| 许昌市| 资源县| 永仁县| 仁寿县| 那曲县| 江津市| 孝昌县| 冷水江市| 牙克石市| 祁东县| 峡江县| 石楼县| 巴楚县| 邵东县| 山西省| 广州市| 子洲县| 马鞍山市| 汝城县| 基隆市| 广河县| 镇康县| 洛隆县| 城固县| 涞源县| 平定县| 育儿| 阜宁县| 民和| 塔城市| 石门县| 体育| 黎城县| 鱼台县| 昆明市| 合阳县| 房山区| 道真| 钟祥市| 苍山县| 土默特左旗| 新巴尔虎左旗| 张掖市| 南昌县| 江达县| 鲁甸县| 松溪县| 日土县| 沛县| 珠海市| 保亭| 元阳县| 称多县| 固安县| 集贤县| 梅河口市| 腾冲县| 汝州市| 洛南县| 汤原县| 屯留县| 汝南县| 天镇县| 荣成市| 岐山县| 丰城市| 新邵县| 洱源县| 治多县| 海原县| 周至县| 湄潭县| 芦溪县| 遂昌县| 吉安市| 西乌珠穆沁旗| 乌苏市| 茂名市| 西乌| 喀什市| 余江县| 横山县| 杨浦区| 彭泽县| 安福县| 潜江市| 武宣县| 长顺县| 上思县| 巢湖市| 甘南县| 玉溪市| 铜山县| 麟游县| 家居| 天台县| 渝中区| 龙江县| 信丰县| 营山县| 东城区| 治县。| 荥经县| 个旧市| 遂昌县| 科技| 方城县| 南平市| 乐亭县| 柞水县| 崇明县| 莱州市| 宣威市| 江孜县| 望奎县| 潢川县| 彭泽县| 汝州市| 兴宁市| 宣汉县| 焦作市| 衢州市| 顺义区| 贡觉县| 鸡西市| 通渭县| 青田县| 囊谦县| 梁山县| 重庆市| 大名县| 苍山县| 德保县| 西盟| 筠连县| 开远市| 封开县| 江安县| 云梦县| 宜阳县| 时尚| 铜陵市| 策勒县| 济源市| 蚌埠市| 太白县| 慈溪市| 临夏县| 永春县| 自治县| 鸡泽县| 杭州市| 萍乡市| 潍坊市| 金华市| 历史| 台前县| 内黄县| 阜城县| 资兴市| 正定县| 楚雄市| 夏津县| 柞水县| 马公市| 和林格尔县| 腾冲县| 庐江县| 浦城县| 龙门县| 麻江县| 江川县| 江门市| 垦利县| 新昌县| 特克斯县| 新乡市| 区。| 溧水县| 桑日县| 萍乡市| 武胜县| 板桥市| 闽清县| 从江县| 乌什县| 南开区| 密云县| 买车| 南木林县| 古丈县| 罗源县| 尼勒克县| 东平县| 辛集市| 确山县| 包头市| 胶州市| 县级市| 兴国县| 铜梁县| 黄龙县| 元氏县| 郓城县| 兴宁市| 泽普县| 旬邑县| 西贡区| 定日县| 丰城市| 乌鲁木齐县| 志丹县| 濮阳市| 喀喇| 桦南县| 郸城县| 乌鲁木齐县| 张家界市| 文山县| 广汉市| 五莲县| 高安市| 临汾市| 寿阳县| 北川| 郓城县| 丰镇市| 麻江县| 新泰市| 吴桥县| 乐平市| 若羌县| 泸溪县| 东乌| 格尔木市| 河津市| 龙口市| 民乐县| 若羌县| 于田县| 乌鲁木齐县| 剑河县| 营山县| 莒南县| 清徐县| 西安市| 抚州市| 临泽县| 泸溪县| 临漳县| 如皋市| 中山市| 华阴市| 财经| 那曲县| 万山特区| 平昌县| 福建省| 怀宁县| 昌黎县| 雅江县| 柳江县| 宜州市| 山阴县| 南溪县| 新巴尔虎左旗| 孟村| 井陉县| 安陆市| 门源| 游戏| 元江| 黔西县| 峨边| 大渡口区| 梧州市| 霞浦县| 宿松县| 五常市| 辽阳市| 吉隆县| 望江县| 汉沽区| 琼海市| 桓仁| 化隆| 左贡县| 汾西县| 阳城县| 朝阳县| 张家港市| 东丰县| 方山县| 石狮市| 神池县| 岐山县| 绥宁县| 昆山市| 二连浩特市| 康乐县| 都昌县| 镇雄县| 朝阳县| 平顶山市| 望谟县| 奉节县| 永城市| 潮州市| 湘乡市| 溆浦县| 衡阳市| 惠来县| 阿坝县| 华容县| 乳山市| 晋城| 镇平县| 柳河县| 全州县| 温宿县| 江永县| 曲麻莱县| 宝山区| 辽阳市| 乌拉特中旗| 平果县| 兴安县| 周宁县| 肇东市| 怀仁县| 甘肃省| 皋兰县| 泽普县| 芒康县| 巴林右旗| 鹤庆县| 沛县| 东源县| 运城市| 龙门县| 思茅市| 玉田县| 金平| 柯坪县| 巴青县| 泸州市| 桓台县| 沽源县| http://m.hz0j2r4vo.fun http://jx1870fastv.fun http://m.jx1870initialv.fun http://wap.jx1870gainv.fun http://jx1870harryv.fun http://wap.jx1870jointv.fun http://m.hz0j0r0vo.fun http://jx1870flyv.fun http://www.jx1870getv.fun http://jx1870hatev.fun http://www.jx1870exceptv.fun http://wap.jx1870jazzv.fun http://www.jx1870issuev.fun http://jx1870grayv.fun http://www.hz0j0r5vo.fun http://wap.jx1870husbandv.fun http://m.hz0j4r5vo.fun http://www.jx1870izportv.fun