LeetCode554 砖墙

2021.5.2日的每日一题,今天看到的时候,第一感觉就是前缀和,然后就写出了下面的代码

class Solution {public int leastBricks(List<List<Integer>> wall) {//按我上午想的思路,就是先求每一行的前缀和,然后每一行弄个指针移动,这些指针用一个数组存储起来//然后遍历,从1到长度和减1,看看哪个穿过的最少int col = wall.size();  //有多少行List<Integer> list = wall.get(0);   //第一行int length = 0;     //一行多长,也就是列数for(int i = 0; i < list.size(); i++){length += list.get(i);}//计算前缀和int[][] presum = new int[col][20001];for(int i = 0; i < col; i++){List<Integer> temp = wall.get(i);for(int j = 0; j < temp.size(); j++){presum[i][j + 1] = presum[i][j] + temp.get(j);}}//每一行目前的下标int[] index = new int[col];Arrays.fill(index, 1);//遍历每一个长度,看看穿过了几个墙,开头结尾不算int res = col;for(int i = 1; i <= length - 1; i++){//遍历每一行int cross = 0;for(int j = 0; j < col; j++){int tempdis = presum[j][index[j]]; //当前行遍历到哪了if(tempdis < i) //如果距离小了,就移动下标,等于不管index[j]++;tempdis = presum[j][index[j]]; //更新if(tempdis > i)     //如果大了,就说明穿过了,等于不算cross++;        }res = Math.min(res, cross);}return res;}
}

写的有点繁琐,但是我自认为思路没问题,先处理每一行的前缀和,然后从1遍历到length - 1,如果有一行在当前位置的前缀和小于该数,就移动下标,等于该数,不处理,大于该数了,说明就穿过砖块了;最后取最小就行了。但是过不了,明天去实验室处理Debug一下再来改。
然后去看了题解,发现自己麻烦了,其实还是前缀和,只不过处理前缀和的时候,就可以把每个数字穿过的边缘数统计下来了,学习了

改正:第一次过不了的示例是[[1,1][2][1,1]]。然后发现跳不进最后的循环中,看了一下,是判断条件出错了,小于变成小于等于就没问题了
然后马上第二次过不了,示例是[100000000][100000000][100000000],显示是超出内存限制,把创建的数组大小改成了题目条件所给的最大限制,这个过了
然后第三次过不了,超出时间限制了,没办法了,但是说明这个思路还是正确的,就是缺少了点灵性,哈哈!

LeetCode554 砖墙相关推荐

  1. leetcode554、砖墙

    题目描述: 你的面前有一堵矩形的.由 n 行砖块组成的砖墙.这些砖块高度相同(也就是一个单位高)但是宽度不同.每一行砖块的宽度之和相等. 你现在要画一条 自顶向下 的.穿过 最少 砖块的垂线.如果你画 ...

  2. 在Substance Designer中创建砖墙视频教程

    学习在Substance Designer中创建复杂材料的高级技术. 如果你想进入游戏行业,想学习如何创建高质量的纹理和学习物质设计,那么这个课程是给你的. 我设计了这个课程,从一开始就带你,教你我用 ...

  3. 我们讨论的是《战争之城》的一个简单版本。如果地图上只有空旷的空间,河流,钢墙和砖墙。你的任务是尽快得到奖金,假设没有敌人会打扰你(见下图) 你的坦克不能穿过河流和墙壁,但它可以通过射击摧毁砖墙。当你击

    我们讨论的是<战争之城>的一个简单版本.如果地图上只有空旷的空间,河流,钢墙和砖墙.你的任务是尽快得到奖金,假设没有敌人会打扰你(见下图) 你的坦克不能穿过河流和墙壁,但它可以通过射击摧毁 ...

  4. leetcode 554. 砖墙

    你的面前有一堵矩形的.由 n 行砖块组成的砖墙.这些砖块高度相同(也就是一个单位高)但是宽度不同.每一行砖块的宽度之和应该相等. 你现在要画一条 自顶向下 的.穿过 最少 砖块的垂线.如果你画的线只是 ...

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

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

  6. LeetCode:砖墙【554】

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

  7. axure 设置背景虚化_axure 设置背景虚化_「PPT素材」 77幅各种墙面砖墙纹理背景...

    由公子整理并全部适合用作PPT背景 公子今天要分享的是一组墙面纹理背景,我个人是比较喜欢砖墙效果的,特别是用在一些复古风或相册图片展示的PPT中! 而对于这种墙面纹理的图片,该如何在PPT中使用,公子 ...

  8. 3dsnbsp;max基础材质初学者必读(15)——设置砖墙纹理

    砖石类的材质,通常较为粗糙,只有很低的反光度和光泽度.通常会使用特殊的纹理贴图设置砖石类材质,以使其显得更为逼真,同时,材质的凹凸效果要与漫反射图像保持一致. 使用从外部导入的贴图设置砖石纹理更为自然 ...

  9. 3DMAX砖墙神器WallBuilder:快速生成常见砖墙插件教程

    3DMAX一键快速生成砖墙插件(3DMAX砖墙神器--快速常见砖墙)WallBuilder,用来生成各种砖砌或石砌墙体.地面的插件. [主要特性] -偏移以将不同的墙放在一起: -可以按照样条曲线创建 ...

最新文章

  1. Markdown介绍
  2. 基于c语言的linux嵌入式开发入门
  3. 对学校的希望和寄语_家长对孩子的期望寄语精选
  4. 央行允许银行倒闭破产,那么储户的存款怎么办?
  5. SmartSql 动态代理仓储
  6. 接口一个被我忽略的地方--接口重定向技术
  7. matlab 粘连分割代码,【求助】图像中粘连字符切分代码,求注释!!!
  8. (51)Xilinx Divider IP核配置(十一)(第11天)
  9. python open w_python-文件操作示例
  10. Widnows开启休眠
  11. Hyper-V应用指南之5-导出、导入虚拟机
  12. 23 个问题 TCP 疑难杂症全解析
  13. 「2021年」国内主流短信验证码平台综合评测
  14. dell 恢复介质_戴尔介质恢复选项
  15. html炫酷动态时钟代码,js动态炫酷数字时钟
  16. v2rayN断网修复
  17. 为仿真器添加eCos多线程调试支持,GDBServer Extender 0.0.1 使用说明
  18. 使用ipmi调节r410的风扇转速
  19. 这4款网页书签管理工具,整理收藏夹更轻松
  20. 超市收银软件测试自学,pos前台收银员培训 免费超市收银软件 视频教程

热门文章

  1. 例题4-1 UVA1339 古老的密码 Ancient Cipher
  2. 在未来智慧城市中的智慧道路进展
  3. 1024开发者盛宴之Java专家问答专场活动说明
  4. Customizable constraint systems for succinct arguments学习笔记(1)
  5. 微信又悄悄更新!网友:终于等到了
  6. python 16进制字符串转二进制字符串
  7. 332. 重新安排行程(图,dfs(深度优先搜索))
  8. puzzle(0413)PuzzleStoneBlocks、平铺楼梯区域
  9. BeeWare开发安卓app科目三灯光模拟器
  10. 如何下载安装JDBC_jar包,MySQL_JDBC_jar包的下载与使用(Windows)