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
              相关文章
              相关标签/搜索
              香港蓝月亮精选免费资料大全管家婆王中王鉄算盘开奖结果2019开奖记录结果查询香港马会开奖结果历史纪录在线查询 合川市| 昂仁县| 桂东县| 登封市| 铜梁县| 漳浦县| 阿合奇县| 南皮县| 永康市| 揭东县| 昌乐县| 蒲江县| 合阳县| 高州市| 苏尼特左旗| 徐汇区| 彰化县| 成都市| 盖州市| 湖南省| 绵阳市| 介休市| 新巴尔虎右旗| 博兴县| 利川市| 连城县| 肥乡县| 高青县| 成安县| 武隆县| 新昌县| 罗甸县| 革吉县| 闸北区| 铁岭市| 青浦区| 洪洞县| 长治县| 深州市| 甘泉县| 北流市| 石河子市| 台南县| 义马市| 广元市| 永平县| 东乡族自治县| 双流县| 通州市| 安福县| 龙江县| 平泉县| 尼玛县| 榕江县| 竹溪县| 隆林| 贵港市| 大化| 青浦区| 西华县| 什邡市| 德阳市| 建水县| 冕宁县| 淳安县| 西昌市| 丽水市| 灵宝市| 正镶白旗| 晋城| SHOW| 司法| 望奎县| 北安市| 庆云县| 玉山县| 安图县| 广西| 织金县| 新化县| 武强县| 拉萨市| 宜都市| 商南县| 平谷区| 资溪县| 光泽县| 阳山县| 清涧县| 绥阳县| 治县。| 洮南市| 鹿泉市| 灌阳县| 科技| 呼伦贝尔市| 湛江市| 靖州| 兴化市| 石首市| 太白县| 大新县| 夏河县| 玛曲县| 宁化县| 巩留县| 色达县| 湘阴县| 海淀区| 保康县| 龙川县| 黄陵县| 卓资县| 郴州市| 昌邑市| 深圳市| 政和县| 枣庄市| 黑龙江省| 康平县| 岢岚县| 弋阳县| 金塔县| 濮阳市| 延津县| 昂仁县| 哈密市| 陈巴尔虎旗| 黄山市| 卢湾区| 凤城市| 贺兰县| 阜南县| 平远县| 碌曲县| 高邮市| 乐业县| 凤冈县| 礼泉县| 南郑县| 陵水| 阿巴嘎旗| 古田县| 阜城县| 澄江县| 平和县| 沙雅县| 巩义市| 巍山| 西安市| 宜君县| 建德市| 济南市| 涟源市| 桓仁| 临西县| 洛宁县| 建水县| 乐都县| 翁牛特旗| 会同县| 卓尼县| 宜章县| 深州市| 庆元县| 苏州市| 乐亭县| 澄江县| 长治县| 蒲城县| 木里| 桃源县| 汽车| 湘乡市| 广东省| 博湖县| 乐山市| 吉安县| 凤山市| 荔浦县| 宁河县| 临洮县| 南皮县| 襄汾县| 连云港市| 渑池县| 石门县| 滁州市| 江山市| 蒲江县| 内丘县| 扎兰屯市| 行唐县| 察雅县| 沈丘县| 海林市| 黄冈市| 澄城县| 金平| 阳泉市| 图木舒克市| 汉阴县| 沙坪坝区| 周至县| 泰兴市| 确山县| 喀什市| 武强县| 五河县| 华坪县| 缙云县| 子洲县| 福鼎市| 洛宁县| 大关县| 临夏市| 广水市| 图木舒克市| 常宁市| 阿克陶县| 镇原县| 宁波市| 门源| 滨海县| 海城市| 长阳| 高要市| 张家界市| 丰城市| 青川县| 安多县| 和硕县| 靖边县| 涡阳县| 阿图什市| 衢州市| 长武县| 南汇区| 山东省| 苍梧县| 温泉县| 左云县| 绥中县| 灵石县| 馆陶县| 定襄县| 乃东县| 宜章县| 青田县| 鹤壁市| 山西省| 瑞丽市| 沐川县| 长海县| 贵阳市| 纳雍县| 鄂托克旗| 花莲县| 大城县| 邓州市| 射阳县| 泰州市| 维西| 横山县| 灵川县| 鹤岗市| 股票| 咸宁市| 甘孜县| 平罗县| 图木舒克市| 蚌埠市| 武义县| 建湖县| 若尔盖县| 安远县| 额尔古纳市| 依兰县| 贵定县| 景德镇市| 寿宁县| 彝良县| 凌源市| 天全县| 喀什市| 海兴县| 东明县| 宁乡县| 惠东县| 大埔县| 浠水县| 南澳县| 富顺县| 北川| 甘德县| 绩溪县| 长顺县| 北宁市| 习水县| 巴塘县| 龙胜| 古交市| 苏州市| 松阳县| 威海市| 富裕县| 九台市| 正宁县| 怀集县| 吴江市| 江安县| 东乡族自治县| 新建县| 井研县| 井研县| 新源县| 东城区| 都安| 仙居县| 怀仁县| 屏东县| 望谟县| 顺昌县| 碌曲县| 衡阳县| 保定市| 阳信县| 皮山县| 宁城县| 塔河县| 瑞安市| 讷河市| 宽甸| 竹溪县| 巴林左旗| 专栏| 永州市| 辉县市| 吴忠市| 平泉县| 益阳市| 沙湾县| 望都县| 咸宁市| 朝阳区| 宝坻区| 东丽区| 绥中县| 沙雅县| 海兴县| 甘洛县| 贡觉县| 英德市| 宁都县| 尚志市| 桃园县| 陆川县| 富阳市| 泾源县| 都兰县| 德钦县| 辽中县| 福建省| 辉县市| 福清市| 稻城县| 长沙县| 平湖市| 沙河市| 乐业县| 丽江市| 汾阳市| 九江市| 隆尧县| 上犹县| 汉源县| 钦州市| 安多县| 堆龙德庆县| 隆德县| 遵义县| 鹤壁市| 荔浦县| 滁州市| 白沙| 台南市| 扶余县| 甘谷县| 屏南县| 南木林县| 云安县| 刚察县| 堆龙德庆县| 西乌| 淅川县| 穆棱市| 北辰区| 泾阳县| 阿勒泰市| 民勤县| 安义县| 兴海县| 涟水县| 沂源县| 新兴县| 屯门区| 安新县| 讷河市| 彰武县| 鹿泉市| 伊吾县| 肇州县| 祁连县| 安顺市| 德江县| 福清市| 绥阳县| 五河县| 全州县| 吴堡县| 墨脱县| 布尔津县| 张北县| 博爱县| 托克逊县| 鹤峰县| 宁化县| 霍州市| 穆棱市| 黔西| 方城县| 黄骅市| 曲麻莱县| 喀喇| 科技| 宜城市| 清涧县| 洛隆县| 屏山县| 米易县| 灵台县| 兰考县| 盘山县| 喀什市| 大方县| 佛教| 玉田县| 天等县| 湖口县| 上杭县| 长宁县| 藁城市| 河曲县| 泰州市| 徐水县| 兰考县| 万全县| 五大连池市| 灵石县| 嘉义市| 仙居县| 内乡县| 乌拉特中旗| 桦甸市| 鹤庆县| 灵石县| 射洪县| 黎平县| 香格里拉县| 兴安县| 类乌齐县| 广东省| 商水县| 资中县| 黄龙县| 舟山市| 黄石市| 河北省| 淮南市| 荔浦县| 缙云县| 长泰县| 慈溪市| 阿鲁科尔沁旗| 扎赉特旗| 秦安县| 舟曲县| 鄂伦春自治旗| 桦南县| 乌苏市| 汤原县| 北碚区| 富锦市| 定安县| 托克托县| 宜春市| 东明县| 磐石市| 郎溪县| 九江县| 内丘县| 梓潼县| 嘉定区| 固原市| 满洲里市| 三明市| 泸西县| 赫章县| 凉山| 怀仁县| 淮南市| 黑龙江省| 肇庆市| 雅江县| 嘉禾县| 黄浦区| 伊通| 河池市| 临朐县| 康定县| 吴旗县| 虞城县| 车险| 泸定县| 磴口县| 大姚县| 枣庄市| 马山县| 宜川县| 海盐县| 溆浦县| 马公市| 宜章县| 西华县| 清丰县| 荥经县| 隆回县| 鲁山县| 特克斯县| 富顺县| 光山县| 上思县| 库尔勒市| 东阳市| 邢台县| 鄂托克旗| 彭泽县| 连云港市| 利川市| 灵石县| 交城县| 青海省| 封开县| 瑞安市| 白银市| 随州市| 丽水市| 河东区| 巴林右旗| 左贡县| 余江县| 耒阳市| 富宁县| 昔阳县| 蕉岭县| 阳江市| 宁都县| 广德县| 南通市| 砚山县| 安福县| 绥宁县| 蒙自县| 阳东县| 称多县| 沁阳市| 沙河市| 诏安县| 汉川市| 吉隆县| 红河县| 南涧| 白玉县| 三原县| 油尖旺区| 新余市| 五寨县| 天峻县| 大兴区| 白河县| 盘山县| 驻马店市| 武川县| 永吉县| 洪江市| 石河子市| 蛟河市| 赤峰市| 澄城县| 观塘区| 普兰县| 乌鲁木齐市| 霸州市| 泌阳县| 依安县| 抚宁县| 加查县| 微山县| 儋州市| 抚顺市| 荆门市| 阆中市| 祁东县| 安阳县| 格尔木市| http://wap.jx1870checkv.fun http://www.jx1870dezandv.fun http://m.jx1870addv.fun http://wap.jx1870bloodv.fun http://wap.jx1870branchv.fun http://3g.jx1870checkv.fun http://3g.jx1870clickv.fun http://wap.jx1870clickv.fun http://3g.jx1870abstractv.fun http://wap.jx1870culturev.fun http://wap.jx1870avoidv.fun http://3g.jx1870chancev.fun http://wap.jx1870cozzandv.fun http://3g.jx1870discussv.fun http://wap.jx1870auditv.fun http://m.jx1870basev.fun http://m.jx1870corev.fun http://m.jx1870blankv.fun