LeetCode 554 Brick Wall (Python)

Posted by 小明MaxMing on April 24, 2021

题目

There is a rectangular brick wall in front of you with n rows of bricks. The ith row has some number of bricks each of the same height (i.e., one unit) but they can be of different widths. The total width of each row is the same.

Draw a vertical line from the top to the bottom and cross the least bricks. If your line goes through the edge of a brick, then the brick is not considered as crossed. You cannot draw a line just along one of the two vertical edges of the wall, in which case the line will obviously cross no bricks.

Given the 2D array wall that contains the information about the wall, return the minimum number of crossed bricks after drawing such a vertical line.

解题思路

使用字典来存每一块儿砖分开的位置,最后去一个最小值

代码

class Solution:
    def leastBricks(self, wall: List[List[int]]) -> int:
        dic = defaultdict(int)
        for row in wall:
            tmp = 0
            for c in row[:-1]:
                tmp += c
                dic[tmp] += 1
        if len(dic) == 0:
            return len(wall)
        return len(wall) - max(dic.values())

视频讲解 YouTube<--欢迎点击订阅

视频讲解 bilibili<--欢迎点击订阅