zoukankan      html  css  js  c++  java
  • LeetCode:砖墙【554】

    LeetCode:砖墙【554】

    题目描述

    你的面前有一堵方形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿过最少砖块的垂线。

    砖墙由行的列表表示。 每一行都是一个代表从左至右每块砖的宽度的整数列表。

    如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你需要找出怎样画才能使这条线穿过的砖块数量最少,并且返回穿过的砖块数量。

    你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。

    示例:

    输入: 
    [[1,2,2,1],
     [3,1,2],
     [1,3,2],
     [2,4],
     [3,1,2],
     [1,3,1,1]]
    输出: 2
    解释: 
    

    题目分析

    我们用一个HashMap来求解每条缝有多少块。

    方法是一行一行的分析每行,一点一点求出前缀和,和 处就是缝处

    Java题解

    public class Solution {
        public int leastBricks(List<List<Integer>> wall) {
            if(wall.size() == 0) return 0;
            int count = 0;
            Map<Integer, Integer> map = new HashMap<Integer, Integer>();
            for(List<Integer> list : wall){
                int length = 0;
                for(int i = 0; i < list.size() - 1; i++){
                    length += list.get(i);
                    map.put(length, map.getOrDefault(length, 0) + 1);
                    count = Math.max(count, map.get(length));
                }
            }
            return wall.size() - count;
        }
    }
    

     

  • 相关阅读:
    浏览器返回按钮不会触发onLoad事件
    js常用方法
    清除浮动
    Hbuilder快捷键
    页面跳转
    castapp.js颜色配置
    mui学习
    css 特殊使用技巧
    mui框架如何实现页面间传值
    从0到千万级访问量网站架构演变史
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9480202.html
Copyright © 2011-2022 走看看