你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和应该相等。

你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。

给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i] 是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并且返回 穿过的砖块数量 。

示例 1:

输入:wall = [[1,2,2,1],[3,1,2],[1,3,2],[2,4],[3,1,2],[1,3,1,1]]
输出:2
示例 2:

输入:wall = [[1],[1],[1]]
输出:3

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/brick-wall
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

因为输入是一个二维数组,因此我们可以将一维数组看成一行砖,例如示例1

输入:wall = [[1,2,2,1],[3,1,2],[1,3,2],[2,4],[3,1,2],[1,3,1,1]]
输出:2

第一行是[1,2,2,1],我们从这里分析,因为题目要求 穿过的砖块数量最少,所以对于每一行,我们需要关注的是砖块之间的空隙去进行插入,这样就能避免穿过砖块,因此我们需要记录每一行砖块空隙的位置

例如:
[1,2,2,1] 空隙坐标为 1,3,5(左端和右端不算空隙)

对于每一层我们使用map记录不同空隙坐标以及对应出现的次数,出现次数最多的空隙坐标代表了有多层砖块都在这个位置出现空隙,从这里穿过的空隙最小。

代码

func leastBricks(wall [][]int) int {m2 := make(map[int]int)n,res:=len(wall),0for i := 0; i < n; i++ {pre:=0for j := 0; j < len(wall[i])-1; j++ {pre+=wall[i][j]i2,ok := m2[pre]if ok{m2[pre]=i2+1}else {m2[pre]=1}if m2[pre]>res{res=m2[pre]}}}return n-res
}

leetcode 554. 砖墙相关推荐

  1. LeetCode 554 砖墙 题解

    LeetCode 554 砖墙 题解 你的面前有一堵矩形的.由 n 行砖块组成的砖墙.这些砖块高度相同(也就是一个单位高)但是宽度不同.每一行砖块的宽度之和相等. 你现在要画一条 自顶向下 的.穿过 ...

  2. Leetcode 554. 砖墙 C++

    Leetcode 554. 砖墙 题目 你的面前有一堵矩形的.由多行砖块组成的砖墙. 这些砖块高度相同但是宽度不同.你现在要画一条自顶向下的.穿过最少砖块的垂线. 砖墙由行的列表表示. 每一行都是一个 ...

  3. LeetCode 554. 砖墙(map计数)

    1. 题目 你的面前有一堵方形的.由多行砖块组成的砖墙. 这些砖块高度相同但是宽度不同.你现在要画一条自顶向下的.穿过最少砖块的垂线. 砖墙由行的列表表示. 每一行都是一个代表从左至右每块砖的宽度的整 ...

  4. Leetcode 554.砖墙

    砖墙 你的面前有一堵方形的.由多行砖块组成的砖墙. 这些砖块高度相同但是宽度不同.你现在要画一条自顶向下的.穿过最少砖块的垂线. 砖墙由行的列表表示. 每一行都是一个代表从左至右每块砖的宽度的整数列表 ...

  5. [leetcode] 554. 砖墙

    class Solution {public:int leastBricks(vector<vector<int>>& wall) {unordered_map< ...

  6. LeetCode.554 砖墙

    原题 https://leetcode-cn.com/problems/brick-wall/ 思路 哈希 题解 package cn.codemao.botmao.admin;import java ...

  7. LeetCode:砖墙【554】

    LeetCode:砖墙[554] 题目描述 你的面前有一堵方形的.由多行砖块组成的砖墙. 这些砖块高度相同但是宽度不同.你现在要画一条自顶向下的.穿过最少砖块的垂线. 砖墙由行的列表表示. 每一行都是 ...

  8. LeetCode每日抑题 554. 砖墙

    554. 砖墙 难度:中等 语言:java 题目内容 你的面前有一堵矩形的.由 n 行砖块组成的砖墙.这些砖块高度相同(也就是一个单位高)但是宽度不同.每一行砖块的宽度之和应该相等. 你现在要画一条 ...

  9. LeetCode 0554. 砖墙

    [LetMeFly]554.砖墙 力扣题目链接:https://leetcode.cn/problems/brick-wall/ 你的面前有一堵矩形的.由 n 行砖块组成的砖墙.这些砖块高度相同(也就 ...

最新文章

  1. 实践重于理论——创建一个监控程序探测WCF的并发处理机制
  2. 地址栏射击游戏!对,你没看错,就是在地址栏上玩的游戏,有图有真相!
  3. iOS获取自1970年毫秒数使用OC和swift两种语法,返回字符串
  4. 持续集成之配置TeamCity
  5. vs中工具箱代表的意思_“日”除了代表太阳,其实还有这种意思,特别是出现在这些词语中的“日”...
  6. java对外sdk提供接口_Android SDK封装,对外提供接口
  7. 二叉搜索树,和红黑树,
  8. 微信端php 开发技术要求,PHP微信开发技术 - WebFalse文档托管平台
  9. 转 基于.NET平台的分层架构实战
  10. Oracle(plsql)数据导入导出
  11. wps里的茶色字体怎么设置_VRay茶色玻璃材质参数是什么,要怎么设置?
  12. Pr 音频效果参考(合集)
  13. 起点中文网字体反爬注意事项
  14. 什么是cc攻击以及个人网站遭到cc攻击的解决方法
  15. 【语音识别】基于VQ特定人孤立词语音识别附matlab代码
  16. linux输入法大小,推荐linux下的输入法--五笔+拼音
  17. 优化嵌入式Linux的启动时间的秘密
  18. 洛克菲勒给他儿子的信
  19. 抽象类和接口的比较(重点)
  20. 程序设计思维模测 - M4

热门文章

  1. 保驾护航金三银四,含BATJM大厂
  2. gcc是java的什么意思_为什么gcc支持Java而不是C#
  3. [转]Excel数据转化为sql脚本
  4. 第1次作业:阅读优秀博文谈感想
  5. Pile 0009: Vim命令梳理
  6. 12.8 线程和信号
  7. 如何安装pylab:python如何导入matplotlib模块
  8. RUNOOB python练习题2
  9. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-8CDH5安装和集群配置
  10. 关于夏季及雷雨天气的MODEM、路由器使用注意事项