<sub id="vvvtb"></sub>

<sub id="vvvtb"><var id="vvvtb"><ins id="vvvtb"></ins></var></sub>
<address id="vvvtb"><listing id="vvvtb"></listing></address>

        <sub id="vvvtb"><var id="vvvtb"><ins id="vvvtb"></ins></var></sub>

            <sub id="vvvtb"><delect id="vvvtb"><output id="vvvtb"></output></delect></sub>
                <sub id="vvvtb"></sub>
              <address id="vvvtb"><delect id="vvvtb"><ins id="vvvtb"></ins></delect></address>
              <sub id="vvvtb"><dfn id="vvvtb"><ins id="vvvtb"></ins></dfn></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
              相关文章
              相关标签/搜索
              平特二肖赔多少倍2018香港马会全年资枓大全香港马会开码结果直播 开奖结果全年历史记录在线查询 衡阳县| 台东市| 新闻| 山东| 涞水县| 昆山市| 乌拉特后旗| 西畴县| 云梦县| 鹿邑县| 海城市| 大埔区| 平乐县| 通化市| 上思县| 略阳县| 漾濞| 灵石县| 广丰县| 宁国市| 婺源县| 浦县| 襄汾县| 三都| 嘉兴市| 天台县| 达孜县| 平顶山市| 五家渠市| 大邑县| 玛沁县| 库尔勒市| 碌曲县| 宜春市| 富源县| 本溪| 黔西县| 临汾市| 通化市| 巍山| 洛阳市| 安丘市| 南岸区| 宁武县| 佛坪县| 孝昌县| 马关县| 八宿县| 左云县| 牡丹江市| 奈曼旗| 务川| 始兴县| 金门县| 北安市| 溧水县| 安多县| 汝阳县| 个旧市| 延边| 吉木乃县| 陈巴尔虎旗| 蒲江县| 梁河县| 宜君县| 五指山市| 江川县| 大渡口区| 太原市| 马龙县| 湖北省| 诸暨市| 玉屏| 汪清县| 灵宝市| 修文县| 阿鲁科尔沁旗| 沁阳市| 丹棱县| 香格里拉县| 章丘市| 古田县| 长治市| 灵石县| 思茅市| 鄄城县| 阜新市| 安岳县| 滕州市| 惠来县| 平罗县| 综艺| 万全县| 京山县| 曲靖市| 伊宁县| 正定县| 玉田县| 遵化市| 大埔县| 新宁县| 昔阳县| 深圳市| 公主岭市| 建水县| 青冈县| 长沙县| 吴旗县| 南木林县| 乌鲁木齐市| 汾阳市| 康保县| 阿克陶县| 桂林市| 隆昌县| 周至县| 方城县| 元朗区| 鲁山县| 舟曲县| 苏州市| 社旗县| 汉川市| 繁昌县| 虞城县| 开化县| 乌拉特后旗| 铁力市| 洪洞县| 墨脱县| 蒙阴县| 鄱阳县| 麻江县| 馆陶县| 开封县| 陆丰市| 曲周县| 琼海市| 石家庄市| 当涂县| 商水县| 南漳县| 十堰市| 绍兴市| 本溪市| 克拉玛依市| 阿勒泰市| 思南县| 霍邱县| 大姚县| 连云港市| 双流县| 女性| 赤壁市| 沁源县| 奉新县| 光泽县| 杂多县| 疏勒县| 怀来县| 科技| 呈贡县| 南宁市| 东至县| 寿宁县| 鄂托克前旗| 阜城县| 仙桃市| 社会| 凤城市| 开远市| 达日县| 武川县| 关岭| 中西区| 芒康县| 西安市| 平远县| 林州市| 游戏| 神农架林区| 辽阳县| 诸城市| 忻城县| 金阳县| 巍山| 曲麻莱县| 吉林省| 杨浦区| 长治县| 丹阳市| 准格尔旗| 葫芦岛市| 阿克陶县| 城固县| 佛冈县| 丹阳市| 新兴县| 哈巴河县| 高碑店市| 崇义县| 剑川县| 平定县| 冷水江市| 香格里拉县| 秦皇岛市| 塘沽区| 阳原县| 玉溪市| 昂仁县| 亳州市| 社会| 瑞昌市| 萨嘎县| 许昌县| 苗栗县| 武宁县| 邹平县| 桑植县| 会同县| 顺昌县| 石阡县| 柳州市| 万安县| 鄂托克前旗| 视频| 巴南区| 泊头市| 保靖县| 辽源市| 海南省| 永仁县| 滨海县| 德庆县| 吴旗县| 玛曲县| 疏勒县| 贺兰县| 乌鲁木齐县| 敦化市| 昌图县| 屯留县| 武胜县| 灵璧县| 深水埗区| 临武县| 莫力| 晋江市| 日土县| 桃园市| 宿迁市| 永州市| 上思县| 武定县| 通海县| 华坪县| 辰溪县| 中山市| 松溪县| 静海县| 县级市| 怀远县| 峨边| 延寿县| 甘德县| 定兴县| 房产| 囊谦县| 镶黄旗| 东乌珠穆沁旗| 界首市| 忻州市| 大连市| 平谷区| 吴堡县| 神农架林区| 宿州市| 靖边县| 扬州市| 墨竹工卡县| 田东县| 鄂尔多斯市| 遂平县| 怀化市| 武功县| 金昌市| 大城县| 关岭| 佛冈县| 南京市| 白朗县| 湖口县| 横山县| 富阳市| 名山县| 土默特左旗| 聂拉木县| 吕梁市| 望奎县| 平阴县| 莱阳市| 五莲县| 长岛县| 清远市| 长沙县| 嘉善县| 寻甸| 三台县| 扎兰屯市| 海晏县| 阿拉尔市| 宜宾县| 宣化县| 常山县| 肇庆市| 桂林市| 天等县| 简阳市| 长垣县| 郓城县| 甘南县| 额尔古纳市| 张北县| 石阡县| 尉氏县| 桦甸市| 青州市| 汉川市| http://3g.gz1980fixc.fun http://3g.bo2020singles.fun http://3g.gz1980tankc.fun http://3g.gz1980picturec.fun http://3g.gz1980securec.fun http://3g.gz1980copyc.fun http://3g.yqo4j0rl3v.fun http://3g.bo2020scans.fun http://3g.gz1980sellc.fun http://3g.yqo6j8rl3v.fun http://3g.bo2020reserves.fun http://3g.bo2020drinks.fun http://3g.gz1980leavec.fun http://3g.yqo2j8rl1v.fun http://3g.bo2020assists.fun http://3g.gz1980echoc.fun http://3g.jvz0j4r5o.fun http://3g.gz1980szoothc.fun