美文网首页
544. 砖墙(Python)

544. 砖墙(Python)

作者: 玖月晴 | 来源:发表于2020-11-12 19:34 被阅读0次

题目

难度:★★★☆☆
类型:数组
方法:哈希

力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录

你的面前有一堵矩形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿过最少砖块的垂线。

砖墙由行的列表表示。 每一行都是一个代表从左至右每块砖的宽度的整数列表。

如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你需要找出怎样画才能使这条线穿过的砖块数量最少,并且返回穿过的砖块数量。

你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。

示例:

输入: [[1,2,2,1],
[3,1,2],
[1,3,2],
[2,4],
[3,1,2],
[1,3,1,1]]

输出: 2

解答

还记得微信小程序欢乐球球吗?也是希望你可以穿过的缝隙尽可能多,而尽可能少的撞到砖头。

欢乐球球

我们使用哈希表来解决这个问题。我们观察到的一层层的砖头和缝隙。我们希望构建这样一个哈西表,这个表中所有表示整个墙上所有缝隙的横坐标,纵坐标表示该位置所在直线穿过的缝隙的数目,通过逐层的遍历就可以获得这个哈希表。最后,我们要使用的是这个哈希表中缝隙数目最大的情况。

class Solution:
    def leastBricks(self, wall):
        loc_gaps = {}
        for layer in wall:
            sums = 0
            for index in range(len(layer)-1):   # 这里-1是因为整个墙的最右端竖线是不能考虑的
                sums += layer[index]
                loc_gaps[sums] = loc_gaps.get(sums, 0) + 1   # get意思是如果有值,取该值,如果没有,返回0
        if len(loc_gaps) == 0:                  
            return len(wall)
        return len(wall) - max(loc_gaps.values())   # 总层数减去裂缝数就是砖头的数目

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

相关文章

  • 544. 砖墙(Python)

    题目 难度:★★★☆☆类型:数组方法:哈希 力扣链接请移步本题传送门[https://leetcode-cn.co...

  • 砖墙

    题目描述:你的面前有一堵方形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿...

  • 544.以进为退

    当有合适的出现的时候就要毫不犹豫的放弃原有的或现有的,起码也要为他腾出安放的空间,否则现在的就会拖累你,因为总有一...

  • 青砖墙

  • 青砖墙

    “你为什么喜欢旅行?” “不清楚。” “总的有个理由吧,鲜花,清风还是朝圣?” “没那么高大上。” “那是旅途的人...

  • 544. 冰缘地貌

  • 红砖墙

    城市并不是处处灯红柳绿,也总有那么一些地方觉得碍眼。 看红砖墙坍塌处,杂草丛生,破烂木条堆出白蚊,零星瓜果蔬菜枯萎...

  • 红砖墙

    红砖墙 放学路上时常经过一栋老旧的宅子,在一面用红砖筑成的墙上挂着长长的...

  • 554. 砖墙

    你的面前有一堵方形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿过最少砖块...

  • 554. 砖墙

    2021-05-02 LeetCode每日一题 链接:https://leetcode-cn.com/proble...

网友评论

      本文标题:544. 砖墙(Python)

      本文链接:https://www.haomeiwen.com/subject/mwnpbktx.html