pat-554. 砖墙

在这里插入图片描述
在这里插入图片描述

解释:
我们找出每一道的空袭,比如在上面我们可切出如下的空袭,然后我们记录在哈希表上面去。然后我们选取出点最多的那个空隙,选出他的对里面,然后就是刀刃碰到最小的次数
在这里插入图片描述
代码如下:
在保存坐标的时候,从起始点开始然后保存每个空袭的长度,然后依次往后面去进行相加,此放入和哈希表里面去。
可能我说其实还是很乱很乱我做出一个解释,将上面的砖块做出一个投影,投影在x轴上面:

10)(30)(50)
(30)(40)
(10)(40)
(20)
(30)(40)
(10)(40)(50

显然(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;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值