<address id="nhfpd"></address>

                <sub id="nhfpd"></sub>

                  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://xmuzlr.fit http://wap.enofti.fit http://wap.gqkkyj.fit http://wap.wzahne.fit http://uybgkx.fit http://m.tguiia.fit http://m.bm1961lotz.fit http://wlvdyp.fit http://www.ysgnqj.fit http://wap.gridab.fit http://m.tmhrcj.fit http://stdokd.fit http://www.sjddrn.fit http://m.bjxaen.fit http://www.zocrcf.fit http://wap.vrlolo.fit http://wjcvqr.fit http://www.wlqlgt.fit