前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >554. 砖墙

554. 砖墙

作者头像
CaesarChang张旭
发布2021-06-10 09:59:10
2760
发布2021-06-10 09:59:10
举报
文章被收录于专栏:悟道

你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。 给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i] 是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并且返回 穿过的砖块数量 。 输入:wall = [[1,2,2,1],[3,1,2],[1,3,2],[2,4],[3,1,2],[1,3,1,1]] 输出:2

代码语言:javascript
复制
class Solution {
    public int leastBricks(List<List<Integer>> wall) {
        /**
        哈希表记录 缝隙出现的下标,缝隙出现的次数
        n-最大缝隙数目=所求答案
         */
         HashMap<Integer,Integer> map=new HashMap();//缝隙出现的下标,缝隙出现的次数
         int n=wall.size();//总行数
         for(int i=0;i<wall.size();i++){

             int sum=0;//记录缝隙出现的下标
             for(int j=0;j<wall.get(i).size();j++){
                 sum+=wall.get(i).get(j);//记录缝隙出现的下标
                 map.put(sum,map.getOrDefault(sum,0)+1);//记录缝隙的次数

             }
             //得删除掉末尾的那个  也就是墙的末尾
             map.remove(sum);
         }
  
       
         //找出缝隙最大的那个
            int max=0;
            Set<Integer> set=map.keySet();
            Iterator<Integer> iter=set.iterator();
            while(iter.hasNext()){
                max=Math.max(max,map.get(iter.next()));
               
            }
         //返回N-缝隙最大次数
         return n-max;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档