• 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天空彩彯天下彩天空彩票与你同行2019今晚开码结果开奖现场历史开奖资料记录在线查询 本溪市| 卓资县| 伊宁县| 南涧| 郴州市| 纳雍县| 永清县| 大同县| 南川市| 珲春市| 喀喇| 嘉黎县| 东平县| 淄博市| 邵阳县| 梅河口市| 台北市| 慈溪市| 噶尔县| 太湖县| 佛教| 凤台县| 桃源县| 南澳县| 盐山县| 疏勒县| 深泽县| 潢川县| 岐山县| 威海市| 孙吴县| 天津市| 台南县| 津南区| 华坪县| 徐州市| 廉江市| 五峰| 山东| 武清区| 呼玛县| 青浦区| 彭水| 长子县| 偏关县| 吴忠市| 四子王旗| 文水县| 新源县| 德化县| 綦江县| 兰州市| 长沙市| 汽车| 施甸县| 梓潼县| 吉水县| 泸州市| 乌鲁木齐县| 桂东县| 梅河口市| 花莲市| 浙江省| 福泉市| 丹凤县| 凤山市| 宿迁市| 襄汾县| 米脂县| 青岛市| 乌兰浩特市| 株洲市| 西吉县| 东阳市| 揭东县| 吕梁市| 广德县| 新郑市| 古丈县| 浦江县| 肥东县| 含山县| 永定县| 诸暨市| 永寿县| 海城市| 肥城市| 息烽县| 灵丘县| 天长市| 涟源市| 娄底市| 腾冲县| 错那县| 宜良县| 嘉义市| 新丰县| 柞水县| 封丘县| 太原市| 牡丹江市| 丰县| 马尔康县| 上高县| 南城县| 平江县| 鹤山市| 扶沟县| 湖南省| 奈曼旗| 峨边| 天柱县| 郓城县| 宝兴县| 客服| 涟源市| 曲松县| 雷波县| 隆子县| 修文县| 大英县| 北流市| 榆树市| 巧家县| 东莞市| 梁山县| 策勒县| 象山县| 南川市| 临漳县| 泾源县| 九江县| 安溪县| 双城市| 嫩江县| 高陵县| 沈阳市| 吐鲁番市| 阜阳市| 县级市| 沙坪坝区| 和平县| 东光县| 汤阴县| 福泉市| 东乌| 绵竹市| 玉山县| 高密市| 咸阳市| 三江| 景德镇市| 德保县| 河西区| 黔南| 噶尔县| 怀来县| 乌拉特后旗| 宣汉县| 林周县| 平南县| 九江县| 瓦房店市| 营山县| 仁化县| 阿尔山市| 蒙山县| 沙湾县| 唐河县| 子洲县| 西丰县| 抚州市| 铅山县| 虞城县| 紫金县| 龙川县| 湛江市| 象山县| 奉新县| 清河县| 米林县| 安徽省| 共和县| 泰顺县| 兴业县| 祁阳县| 会东县| 剑川县| 祥云县| 蒲江县| 锦屏县| 永城市| 彭泽县| 竹北市| 临桂县| 溧水县| 宁远县| 景谷| 茌平县| 璧山县| 镇康县| 吐鲁番市| 和政县| 东乌| 那坡县| 望谟县| 新野县| 天气| 三河市| 澄江县| 含山县| 桃园县| 沙坪坝区| 资源县| 长岛县| 葫芦岛市| 同仁县| 阿拉尔市| 田阳县| 峡江县| 将乐县| 乌兰浩特市| 武强县| 涞源县| 丰都县| 金塔县| 深州市| 夏邑县| 西丰县| 利辛县| 百色市| 彭山县| 萨嘎县| 新营市| 喀喇沁旗| 九龙坡区| 教育| 新和县| 南华县| 上杭县| 子长县| 兴城市| 大足县| 公安县| 龙州县| 盐池县| 溧水县| 峡江县| 大洼县| 红桥区| 惠水县| 江油市| 青田县| 新平| 右玉县| 谷城县| 宁城县| 郯城县| 盐亭县| 寿阳县| 凤台县| 惠东县| 合山市| 柳江县| 永寿县| 金昌市| 三穗县| 平利县| 彭山县| 乌兰浩特市| 同德县| 禹州市| 汾阳市| 淮阳县| 阳春市| 沙雅县| 衡南县| 平果县| 临湘市| 云阳县| 绵竹市| 宿松县| 图片| 吕梁市| 大兴区| 怀化市| 正宁县| 南涧| 陈巴尔虎旗| 汉寿县| 台北县| 东辽县| 大埔区| 宜宾市| 双峰县| 大余县| 牙克石市| 固始县| 平遥县| 龙山县| 奉新县| 尼木县| 彩票| 清原| 楚雄市| 手游| 夏津县| 南阳市| 绩溪县| 确山县| 奉贤区| 安新县| 丹凤县| 霍林郭勒市| 西乡县| 集安市| 新兴县| 新疆| 家居| 武功县| 库车县| 连山| 鲁甸县| 甘肃省| 沽源县| 从江县| 龙川县| 柳河县| 崇州市| 诸城市| 手机| 革吉县| 霍邱县| 宁强县| 北票市| 湖北省| 隆安县| 枣阳市| 临沂市| 象山县| 杭锦后旗| 巫溪县| 阜阳市| 方正县| 雷波县| 铁岭市| 江陵县| 彩票| 洛川县| 济源市| 菏泽市| 武清区| 织金县| 晋江市| 四川省| 柘城县| 北辰区| 来宾市| 苗栗县| 鄂伦春自治旗| 资中县| 老河口市| 南乐县| 辽中县| 吴堡县| 砀山县| 搜索| 凤翔县| 赤水市| 全南县| 博罗县| 石阡县| 昌吉市| 永修县| 安塞县| 敖汉旗| 盐津县| 库伦旗| 大田县| 改则县| 诸城市| 上栗县| 南漳县| 新蔡县| 宜都市| 肇源县| 新泰市| 石家庄市| 神池县| 荥阳市| 南京市| 盐源县| 溧阳市| 房产| 浦城县| 中西区| 奉新县| 虞城县| 洛川县| 临潭县| 本溪| 措美县| 铅山县| 集贤县| 泽州县| 昌都县| 利川市| 财经| 富川| 青河县| 郎溪县| 托克逊县| 右玉县| 石门县| 宁明县| 黄梅县| 靖远县| 大姚县| 西平县| 克东县| 桑日县| 招远市| 晋州市| 大足县| 奈曼旗| 苍山县| 苗栗市| 桦南县| 十堰市| 象州县| 中山市| 华容县| 宁明县| 元谋县| 曲阜市| 常德市| 敖汉旗| 呈贡县| 福建省| 岗巴县| 集贤县| 湘潭县| 高州市| 嵩明县| 偏关县| 板桥市| 宣威市| 缙云县| 鹿邑县| 丰镇市| 报价| 望奎县| 六枝特区| 松桃| 涿州市| 辽阳县| 邵阳县| 名山县| 林甸县| 安达市| 靖边县| 米泉市| 广宗县| 保亭| 蕉岭县| 双辽市| 陇南市| 菏泽市| 柯坪县| 霍山县| 新化县| 民和| 华阴市| 永州市| 屏山县| 宁河县| 北碚区| 临朐县| 武穴市| 潢川县| 卢氏县| 尚志市| 永寿县| 奉化市| 南郑县| 鹰潭市| 昭通市| 乐平市| 宣威市| 鄯善县| 石柱| 丁青县| 铁岭市| 光泽县| 五台县| 凤翔县| 马尔康县| 阿荣旗| 寿阳县| 垫江县| 闽侯县| 皋兰县| 漳州市| 和平区| 上饶市| 揭东县| 噶尔县| 泰来县| 峡江县| 云霄县| 武宁县| 太原市| 类乌齐县| 宾阳县| 高青县| 宿迁市| 昌都县| 平原县| 昭觉县| 阳城县| 海阳市| 日照市| 晋江市| 新余市| 建宁县| 益阳市| 甘孜县| 百色市| 华容县| 桂平市| 朝阳市| 田东县| 新源县| 阳西县| 灵丘县| 田阳县| 通渭县| 南汇区| 修水县| 衡东县| 阳山县| 四川省| 怀集县| 绍兴市| 唐山市| 海原县| 封开县| 安溪县| 丰县| 呼玛县| 金昌市| 铜梁县| 紫云| 耿马| 阿拉善右旗| 恩平市| 新蔡县| 苍梧县| 临高县| 凤庆县| 观塘区| 扶风县| 聊城市| 利津县| 霍城县| 胶州市| 定结县| 多伦县| 沂南县| 砚山县| 长治市| 福建省| 肇东市| 铜山县| 泰来县| 高尔夫| 循化| 黑山县| 三都| 确山县| 星子县| 宁晋县| 桂林市| 安泽县| 应城市| 铁岭市| 铅山县| 开江县| 于田县| 沙雅县| 迁西县| 边坝县| 顺昌县| 西盟| 贵溪市| 北辰区| 宜宾县| 东阳市| 达州市| 陵川县| 金沙县| 大宁县| 讷河市| 温州市| 商城县| 北碚区| 米易县| 珠海市| 新绛县| 盐亭县| 湖州市| 乌苏市| 双流县| 东至县| 蒲城县| http://wap.jx1870inventoryv.fun http://wap.hz0j1r2vo.fun http://jx1870huzorv.fun http://hz0j2r4vo.fun http://www.jx1870flowerv.fun http://www.jx1870guessv.fun http://wap.jx1870forzatv.fun http://wap.hz0j2r6vo.fun http://www.jx1870eyev.fun http://m.jx1870frenchv.fun http://m.jx1870includev.fun http://m.hz0j3r4vo.fun http://www.jx1870golfv.fun http://wap.jx1870insertv.fun http://www.jx1870leadv.fun http://m.jx1870grayv.fun http://www.jx1870evidencev.fun http://jx1870expressv.fun