<address id="bxxfd"><dfn id="bxxfd"></dfn></address>

<dl id="bxxfd"><video id="bxxfd"></video></dl>

<sub id="bxxfd"><delect id="bxxfd"><ins id="bxxfd"></ins></delect></sub>

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

      <form id="bxxfd"><listing id="bxxfd"></listing></form>

      <thead id="bxxfd"><delect id="bxxfd"><output id="bxxfd"></output></delect></thead>

      <thead id="bxxfd"><var id="bxxfd"><output id="bxxfd"></output></var></thead><sub id="bxxfd"><var id="bxxfd"><output id="bxxfd"></output></var></sub>
      <sub id="bxxfd"><var id="bxxfd"><ruby id="bxxfd"></ruby></var></sub>
      <address id="bxxfd"><dfn id="bxxfd"></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
      相关文章
      相关标签/搜索
      三十码期期必中√资料2020年香港马会最快手机报码开奖结果现场直播历史查询记录二四六天天好彩免费资料大全网 玉屏| 屏山县| 闽清县| 万源市| 安塞县| 滕州市| 宝鸡市| 柳州市| 长海县| 清新县| 石家庄市| 湘阴县| 孝昌县| 晴隆县| 青浦区| 三亚市| 开江县| 都兰县| 繁峙县| 山东省| 工布江达县| 昌黎县| 阜平县| 子洲县| 正阳县| 忻州市| 子洲县| 如皋市| 开江县| 安丘市| 建湖县| 贞丰县| 军事| 衡阳县| 什邡市| 曲麻莱县| 嘉鱼县| 祁东县| 岑巩县| 海门市| 固安县| 贞丰县| 上林县| 织金县| 浦北县| 宁陕县| 略阳县| 酉阳| 五家渠市| 乌海市| 尼勒克县| 吉林市| 麻栗坡县| 左贡县| 合川市| 海城市| 巴东县| 抚顺县| 内江市| 大宁县| 额济纳旗| 秦皇岛市| 神池县| 德令哈市| 伊春市| 托克逊县| 昌黎县| 阳西县| 抚松县| 库尔勒市| 格尔木市| 巴青县| 南岸区| 韩城市| 楚雄市| 河池市| 乐昌市| 上栗县| 顺平县| 桓台县| 墨江| 隆昌县| 黄山市| 鸡西市| 崇左市| 桓仁| 宁都县| 新宁县| 柳州市| 兖州市| 交城县| 布拖县| 合山市| 徐水县| 威远县| 乌海市| 兴文县| 石嘴山市| 德清县| 奉贤区| 茌平县| 盘山县| 马公市| 农安县| 通州区| 宿迁市| 阳高县| 乐陵市| 蕉岭县| 突泉县| 察隅县| 临夏县| 隆林| 胶州市| 阳山县| 兴宁市| 钟祥市| 宜阳县| 连云港市| 祁阳县| 永吉县| 安多县| 峡江县| 嘉黎县| 杭锦旗| 宿州市| 泉州市| 宁阳县| 定襄县| 科尔| 建瓯市| 黑河市| 酉阳| 淳化县| 龙岩市| 蒲城县| 桦甸市| 焦作市| 布拖县| 随州市| 依安县| 中超| 南陵县| 南部县| 榆林市| 泾源县| 巫山县| 永新县| 贵南县| 泗阳县| 资源县| 云南省| 九龙城区| 宝鸡市| 西安市| 武威市| 天镇县| 佛坪县| 东乡族自治县| 彭泽县| 呼图壁县| 文登市| 盱眙县| 施秉县| 昌图县| 安达市| 绵竹市| 惠东县| 泾阳县| 民乐县| 佛学| 荣成市| 大洼县| 调兵山市| 漳州市| 大厂| 龙里县| 连南| 阿坝县| 吉水县| 静乐县| 宁德市| 尼木县| 治多县| 贵德县| 和平县| 田阳县| 山东省| 漠河县| 天祝| 和龙市| 库尔勒市| 泰顺县| 陕西省| 阿拉善右旗| 皋兰县| 鸡西市| 龙游县| 阆中市| 司法| 沙洋县| 潜江市| 金坛市| 定西市| 奉新县| 达尔| 滦平县| 新泰市| 靖边县| 永和县| 武宣县| 太仆寺旗| 娄烦县| 洛浦县| 察雅县| 资中县| 丹江口市| 恭城| 禹州市| 闻喜县| 陆河县| 普安县| 六安市| 长沙市| 民勤县| 精河县| 台南市| 迁西县| 和田县| 兴文县| 民县| 平南县| 黄山市| 新源县| 临澧县| 南投市| 余江县| 犍为县| 普兰店市| 梓潼县| 普兰店市| 新乐市| 新源县| 旬邑县| 株洲县| 平远县| 隆昌县| 青田县| 萨迦县| 蒙阴县| 成安县| 宁南县| 定西市| 五原县| 温州市| 胶南市| 新邵县| 灵宝市| 宣恩县| 东海县| 绥化市| 阿坝| 许昌市| 阿鲁科尔沁旗| 元朗区| 中方县| 福海县| 通山县| 玉屏| 峨眉山市| 晴隆县| 河北省| 财经| 盐亭县| 高安市| 崇礼县| 临沧市| 辽宁省| 肥西县| 大兴区| 翁源县| 奉化市| 游戏| 安顺市| 鹤庆县| 屯门区| 莎车县| 泾阳县| 扎囊县| 自贡市| 内江市| 焦作市| 金湖县| 石林| 宝清县| 威远县| 大宁县| 惠州市| 蚌埠市| 壤塘县| 乌鲁木齐市| 界首市| 衡阳县| 洪江市| 抚远县| 习水县| 万载县| 峨山| 朝阳县| 屏山县| 清徐县| 嘉黎县| 北宁市| 颍上县| 修武县| 耒阳市| 临沧市| 金堂县| 禹州市| 昔阳县| 铜陵市| 桃园县| 涪陵区| 余姚市| 通化市| 陆良县| 江都市| 南川市| 石家庄市| 嘉定区| 浮梁县| 长汀县| 九台市| 江津市| 昭平县| 崇左市| 瑞昌市| 宁蒗| 七台河市| 甘肃省| 天台县| 长宁县| 太白县| 张家口市| 正蓝旗| 衡东县| 名山县| 太保市| 哈巴河县| 辰溪县| 莲花县| 汾西县| 定西市| 永修县| 塔城市| 萍乡市| 察雅县| 常州市| 色达县| 中阳县| 永新县| 岳阳县| 三门峡市| 赤峰市| 米泉市| 会东县| 焦作市| 宁河县| 绥江县| 方城县| 宁蒗| 元阳县| 龙海市| 景洪市| 海原县| 尼勒克县| 万荣县| 滕州市| 黑山县| 肃北| 华池县| 娄底市| 新巴尔虎右旗| 大埔区| 浦东新区| 湘阴县| 仁布县| 务川| 新河县| 商城县| 昭平县| 屯门区| 朝阳县| 枞阳县| 页游| 克拉玛依市| 酉阳| 吴川市| 舟山市| 阿瓦提县| 祁东县| 博乐市| 曲麻莱县| 东台市| 江达县| 翼城县| 盱眙县| 潮安县| 汨罗市| 醴陵市| 来安县| 连城县| 镇赉县| 临泉县| 伊春市| 宁城县| 曲水县| 乌拉特前旗| 闵行区| 荥经县| 海林市| 炉霍县| 河北省| 凤城市| 建瓯市| 兴安盟| 云浮市| 东兴市| 博兴县| 泰兴市| 多伦县| 墨玉县| 岱山县| 景泰县| 庐江县| 台东市| 嫩江县| 祁阳县| 略阳县| 江油市| 水富县| 英德市| 安丘市| 信丰县| 台湾省| 钦州市| 溧阳市| 扶风县| 余江县| 司法| 东乡县| 江津市| 忻州市| 上蔡县| 鹤山市| 阳新县| 合江县| 绩溪县| 静安区| 绥芬河市| 循化| 微博| 云霄县| 武邑县| 沙湾县| 台州市| 沈丘县| 凤山市| 建德市| 嘉鱼县| 九龙县| 麟游县| 青龙| 武功县| 屏东市| 通道| 清水县| 罗定市| 延吉市| 盐山县| 彭山县| 逊克县| 珠海市| 普洱| 正镶白旗| 三明市| 沾益县| 蒲江县| 襄樊市| 浏阳市| 高安市| 靖安县| 阜平县| 崇信县| 西贡区| 巩留县| 开平市| 巴林左旗| 涪陵区| 巍山| 铁岭市| 新昌县| 克东县| 汶上县| 晋江市| 鄂托克旗| 大石桥市| 福贡县| 温州市| 南和县| 贵阳市| 乌审旗| 泌阳县| 寿阳县| 开平市| 成安县| 神池县| 扶余县| 广饶县| 吕梁市| 毕节市| 河南省| 横峰县| 巴林右旗| 普洱| 湛江市| 图片| 阜平县| 镇坪县| 太仆寺旗| 永州市| 高台县| 鄂托克前旗| 兴仁县| 安顺市| 渭南市| 涞源县| 崇明县| 泰顺县| 栾川县| 德兴市| 沭阳县| 通渭县| 广昌县| 陕西省| 穆棱市| 保康县| 盐津县| 凉城县| 宝丰县| 灵台县| 土默特左旗| 萨迦县| 铜川市| 革吉县| 凉山| 钟祥市| 南雄市| 黄山市| 大名县| 东方市| 磐石市| 建宁县| 西藏| 建湖县| 昭平县| 武清区| 惠安县| 福安市| 安图县| 迁安市| 都安| 荔波县| 宜黄县| 凤凰县| 得荣县| 静安区| 阳原县| 平舆县| 万年县| 德钦县| 化德县| 宿迁市| 大方县| 禄丰县| 张家口市| 黄大仙区| 漳浦县| 禹城市| 德昌县| 涪陵区| 凤台县| 胶州市| 鄂伦春自治旗| 长汀县| 乌鲁木齐县| 湘潭县| 定西市| 浦北县| 密云县| 信丰县| 镇原县| 大洼县| 青田县| 乐陵市| 肥城市| 天峻县| 兴海县| 喜德县| 大英县| 嘉祥县| 襄汾县| 双桥区| 鄂伦春自治旗| 东辽县| http://wap.hz0j2r0vo.fun http://www.jx1870ensurev.fun http://jx1870hostv.fun http://wap.hz0j2r6vo.fun http://jx1870forwardv.fun http://m.jx1870izprovev.fun http://wap.jx1870jackv.fun http://www.jx1870fitv.fun http://wap.jx1870followv.fun http://www.jx1870exercisev.fun http://wap.jx1870fairv.fun http://jx1870landv.fun http://wap.jx1870evidencev.fun http://wap.jx1870izpactv.fun http://jx1870frazev.fun http://wap.hz0j3r6vo.fun http://m.jx1870filterv.fun http://jx1870happenv.fun