题目
你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和相等。
你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。
给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i] 是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并且返回 穿过的砖块数量 。
示例 1:
#解析
空隙为[1,3,5],[3,4],[1,4],[2],[3,4],[1,4,5]
将重复的空隙加一下,看它重复了几次,重复最多的空隙重复了多少次,设为x
墙长减x即为最少砖块数
#代码
class Solution:
def leastBricks(self, wall: List[List[int]]) -> int:
gap=collections.defaultdict(int)
for line in wall:
dis=0
for i in range(len(line)-1):
dis+=line[i]
gap[dis]+=1
if len(gap.values())==0:
return len(wall)
else:
return len(wall)-max(gap.values())
#运行结果