解释:
我们找出每一道的空袭,比如在上面我们可切出如下的空袭,然后我们记录在哈希表上面去。然后我们选取出点最多的那个空隙,选出他的对里面,然后就是刀刃碰到最小的次数
代码如下:
在保存坐标的时候,从起始点开始然后保存每个空袭的长度,然后依次往后面去进行相加,此放入和哈希表里面去。
可能我说其实还是很乱很乱我做出一个解释,将上面的砖块做出一个投影,投影在x轴上面:
(1,0)(3,0)(5,0)
(3,0)(4,0)
(1,0)(4,0)
(2,0)
(3,0)(4,0)
(1,0)(4,0)(5,0)
显然(4,0)这个垂直位置上面的空隙更多,那么碰到的砖块那么就更少
class Solution {
public:
int leastBricks(vector<vector<int>>& wall) {
//建立哈希表。统计出一共有多少个缝,最后取出一个对立面
//int len=wall[0].size();//就是表示的是横向的长度
unordered_map<int,int> hash;
for(auto& c:wall){
//记录每一个点还要去记录标记
for(int i=0,s=0;i<(int)c.size()-1;i++){
s+=c[i];
hash[s]++;
}
}
//然后找出空袭最多的那么个点——直接用哈希表的for-each循环
int res=0;
//直接取出键对应的值的值
for(auto [k,v]:hash){
res=max(res,v);
}
return wall.size()-res;
}
};