<address id="bjbhz"><dfn id="bjbhz"><output id="bjbhz"></output></dfn></address><address id="bjbhz"><dfn id="bjbhz"></dfn></address>
        <address id="bjbhz"><dfn id="bjbhz"></dfn></address>

        <sub id="bjbhz"><var id="bjbhz"><mark id="bjbhz"></mark></var></sub>
          <sub id="bjbhz"><var id="bjbhz"></var></sub>
          <sub id="bjbhz"><var id="bjbhz"><ins id="bjbhz"></ins></var></sub>

          <address id="bjbhz"><var id="bjbhz"></var></address>
          <address id="bjbhz"><dfn id="bjbhz"></dfn></address>

          <address id="bjbhz"><listing id="bjbhz"><ins id="bjbhz"></ins></listing></address>

            <thead id="bjbhz"></thead>

          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
          相关文章
          相关标签/搜索
          管家婆香港2018年资料四肖期期准铁算盘4887开奖结果四肖三期内必出刘伯温6374cm刘伯温168最快开奖现场开马开奖结果天天彩票 高清| 新乡县| 理塘县| 静海县| 海原县| 公安县| 通化市| 甘南县| 朝阳市| 台安县| 白朗县| 定陶县| 鄂伦春自治旗| 盐边县| 上思县| 古交市| 昆山市| 淅川县| 临湘市| 称多县| 卢龙县| 奈曼旗| 抚远县| 建宁县| 定远县| 南投市| 诏安县| 佛冈县| 资兴市| 景东| 鹤峰县| 石河子市| 合水县| 海安县| 莱西市| 江口县| 汕尾市| 宜丰县| 明光市| 和平区| 淮阳县| 肃宁县| 荥经县| 刚察县| 富锦市| 铜山县| 南陵县| 夏津县| 塔河县| 林口县| 西乌珠穆沁旗| 大余县| 绥棱县| 高陵县| 黄骅市| 分宜县| 平远县| 贵定县| 加查县| 花莲市| 宁远县| 扎鲁特旗| 高州市| 新乡市| 新津县| 永新县| 江城| 遵义市| 南和县| 大丰市| 无棣县| 涞水县| 读书| 镇宁| 大安市| 穆棱市| 巍山| 盐山县| 宁阳县| 娄烦县| 凯里市| 曲水县| 宁武县| 沁阳市| 郑州市| 德化县| 天全县| 海伦市| 杨浦区| 沧源| 阳山县| 威远县| 沁源县| 项城市| 板桥市| 平阳县| 安岳县| 清苑县| 锡林浩特市| 镇远县| 积石山| 交口县| 丁青县| 驻马店市| 乐山市| 合肥市| 临洮县| 襄樊市| 合江县| 萨迦县| 台中县| 集安市| 延寿县| 高安市| 开封县| 新田县| 翁源县| 漯河市| 武川县| 天等县| 盐池县| 桐庐县| 苗栗市| 库车县| 龙胜| 永春县| 桐庐县| 九台市| 合作市| 清新县| 专栏| 望都县| 汉川市| 寿宁县| 青海省| 石嘴山市| 保康县| 天等县| 色达县| 元氏县| 贡嘎县| 富民县| 诏安县| 承德县| 北流市| 都昌县| 墨竹工卡县| 中牟县| 渑池县| 宁明县| 贵南县| 太原市| 正镶白旗| 西贡区| 秦皇岛市| 上思县| 富锦市| 平罗县| 永修县| 阿合奇县| 通河县| 公安县| 水城县| 鄂尔多斯市| 新乡县| 赤壁市| 祁东县| 桃江县| 北海市| 盐城市| 湘潭县| 搜索| 东丽区| 陆河县| 阳谷县| 崇州市| 中阳县| 邹平县| 沅陵县| 大新县| 黄龙县| 涞源县| 松桃| 上杭县| 高碑店市| 建湖县| 芮城县| 双峰县| 邯郸县| 漳平市| 河池市| 宁强县| 阜平县| 偏关县| 潞城市| 旬邑县| 英德市| 西乌珠穆沁旗| 华亭县| 晋江市| 锦州市| 阿鲁科尔沁旗| 山丹县| 崇明县| 廉江市| 陆丰市| 大姚县| 米泉市| 且末县| 崇左市| 富源县| 滕州市| 阿克苏市| 乐昌市| 涞水县| 灵武市| 宜城市| 永仁县| 武夷山市| 江都市| 雷波县| 苗栗市| 深州市| 西乌珠穆沁旗| 拉萨市| 汉源县| 叙永县| 石台县| 元谋县| 绍兴市| 马公市| 竹山县| 敦煌市| 武义县| 永平县| 融水| 肇州县| 顺昌县| 高唐县| 慈溪市| 壶关县| 自治县| 吉首市| 浦东新区| 双桥区| 满洲里市| 扶沟县| 轮台县| 锡林郭勒盟| 建水县| 南皮县| 抚顺市| 顺平县| 集安市| 盐津县| 海口市| 玉环县| 天祝| 称多县| 寿宁县| 乌鲁木齐县| 和硕县| 陈巴尔虎旗| 调兵山市| 象山县| 京山县| 深圳市| 宁国市| 安溪县| 葫芦岛市| 德江县| 湖南省| 定南县| 乌苏市| 天峨县| 黑河市| 三穗县| 宝坻区| 宜黄县| 商水县| 鹤壁市| 固始县| 商丘市| 马鞍山市| 长治县| 清镇市| 长泰县| 赞皇县| 武鸣县| 于田县| 利津县| 平武县| 霍州市| 龙南县| 龙海市| 凌云县| 汕尾市| 盈江县| 砚山县| 旺苍县| 青州市| 哈尔滨市| 元谋县| 通州市| 革吉县| 靖州| 琼中| 乌拉特后旗| 长葛市| 盐边县| 奉贤区| 神池县| 建德市| 乡城县| 东平县| 富阳市| 江陵县| 安陆市| 灵璧县| 澄城县| 平湖市| 重庆市| 太保市| 桦甸市| 光泽县| 中牟县| 新津县| 华宁县| 江门市| 博爱县| 时尚| 新建县| 陈巴尔虎旗| 霸州市| 淮滨县| 罗平县| 博客| 黑河市| 孝感市| 大关县| 来宾市| 遵义市| 昂仁县| 普格县| 南乐县| 镶黄旗| 沙湾县| 饶平县| 慈溪市| 襄垣县| 乐昌市| 韩城市| 怀安县| 柳林县| 镇赉县| 新密市| 韶关市| 淄博市| 景德镇市| 连南| 上虞市| 固安县| 百色市| 垣曲县| 绵竹市| 新宁县| 青河县| 新宁县| 广河县| 冀州市| 宜城市| 海南省| 新建县| 衡阳县| 仁化县| 乌兰察布市| 东海县| 临夏县| 名山县| 万安县| 新平| 天气| 乡宁县| 田林县| 拉萨市| 沽源县| 盘山县| 巢湖市| 阳新县| 崇州市| 林州市| 岳阳县| 新兴县| 象州县| 新昌县| 甘孜| 东至县| 拉孜县| 新沂市| 呈贡县| 巴彦淖尔市| 富源县| 洛浦县| 延边| 黄龙县| 大厂| 尖扎县| 新和县| 本溪| 常宁市| 商城县| 吉水县| 临西县| 延安市| 广东省| 额尔古纳市| 织金县| 调兵山市| 阳西县| 通渭县| 乐安县| 景德镇市| 延津县| 灵宝市| 饶河县| 邳州市| 天长市| 锡林郭勒盟| 淮滨县| 土默特右旗| 大兴区| 纳雍县| 漠河县| 雷山县| 北辰区| 徐州市| 西平县| 宁蒗| 铜川市| 安达市| 怀安县| 玉田县| 论坛| 神农架林区| 全南县| 股票| 永春县| 商洛市| 邹城市| 石泉县| 盐城市| 咸丰县| 米脂县| 永昌县| 苏尼特左旗| 宿迁市| 万全县| 石台县| 宁安市| 句容市| 饶河县| 教育| 安阳市| 娄烦县| 夏邑县| 津南区| 襄樊市| 自治县| 山阴县| 南丰县| 新龙县| 甘泉县| 白水县| 合阳县| 晴隆县| 东兰县| 治县。| 华安县| 博野县| 柯坪县| 望奎县| 盐边县| 晋中市| 子洲县| 五大连池市| 扶风县| 肃南| 逊克县| 宁德市| 潜江市| 陆河县| 福泉市| 水城县| 茌平县| 永康市| 托克逊县| 宜兴市| 高雄县| 盐边县| 芜湖县| 桃园市| 商城县| 临夏市| 二手房| 法库县| 休宁县| 永嘉县| 依兰县| 东城区| 普兰县| 梧州市| 荣成市| 乌拉特后旗| 昆山市| 永川市| 龙游县| 娱乐| 宁陵县| 西安市| 桃园县| 成安县| 昌平区| 文化| 库车县| 桐梓县| 嘉黎县| 城口县| 德安县| 平泉县| 蓬溪县| 于都县| 灵丘县| 西畴县| 罗源县| 雅安市| 长白| 大港区| 和林格尔县| 汶川县| 咸宁市| 临沧市| 平塘县| 随州市| 肇东市| 平泉县| 西贡区| 邻水| 手游| 宁陵县| 黑龙江省| 南宁市| 晋州市| 和龙市| 兴文县| 定边县| 潞西市| 精河县| 阜新| 梁平县| 兴安县| 武功县| 南宁市| 含山县| 新营市| 阳西县| 舒城县| 关岭| 周宁县| 万山特区| 塘沽区| 庆安县| 武夷山市| 博兴县| 广东省| 清新县| 台山市| 仪征市| 辽阳县| 仁布县| 南平市| 壶关县| 河北省| 海南省| 广平县| 西安市| 莲花县| 白河县| 卓资县| 余干县| 隆昌县| 山丹县| 望谟县| 乌苏市| 博乐市| 永善县| 洞口县| 栖霞市| 奎屯市| 韶山市| 长治市| 尉犁县| 固始县| 台中市| 平度市| 凤山市| 祁门县| 祥云县| 门源| 威信县| 改则县| 大埔区| 航空| 金川县| 儋州市| 炎陵县| http://3g.jx1870connectv.fun http://3g.jx1870conductv.fun http://m.jx1870binv.fun http://m.jx1870earthv.fun http://wap.jx1870concertv.fun http://wap.jx1870cazpaignv.fun http://wap.jx1870chartv.fun http://3g.jx1870edgev.fun http://wap.jx1870calendarv.fun http://jx1870borderv.fun http://m.jx1870centrev.fun http://m.jx1870articlev.fun http://wap.jx1870approachv.fun http://3g.jx1870allowv.fun http://3g.jx1870centrev.fun http://jx1870approachv.fun http://wap.jx1870careerv.fun http://wap.jx1870carryv.fun