砖墙(力扣)Map + 思维 JAVA

news2024/9/30 3:18:55

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

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

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

在这里插入图片描述

输入: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

提示:

n == wall.length
1 <= n <= 10^4
1 <= wall[i].length <= 10^4
1 <= sum(wall[i].length) <= 2 * 10^4
对于每一行 i ,sum(wall[i]) 是相同的
1 <= wall[i][j] <= 2^31 - 1

解题思路:

1、正着不好求,但逆向思维:求穿过砖块边缘数的最大值有奇效

2、需要神器HashMap来更新:<砖块边缘,数量>

3、最右边砖块边缘是不符合要求的,所以不记录

4、最后用总述职砖块数 - 最大边缘数即可

在这里插入图片描述

代码:

class Solution {
    public int leastBricks(List<List<Integer>> wall) {
    	   Map<Integer, Integer> map = new HashMap<Integer, Integer>();
           for(List<Integer> s : wall) {
        	  int len = s.size();
        	  int sum = 0;
        	  for(int i = 0; i < len - 1; i ++) {
        		  sum = sum + s.get(i);
        		  map.put(sum, map.getOrDefault(sum, 0) + 1);
        	  }
           }
           int maxres = 0;
           for(Map.Entry<Integer, Integer> a : map.entrySet()) {
        	   maxres = Math.max(maxres, a.getValue());
           }
           return wall.size() - maxres;
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-jQuery - Puff方法函数

吹气效果可以与show/hide/toggle一起使用。通过按比例放大元素并同时隐藏它&#xff0c;可以形成粉扑效果。 Puff - 语法 selector.hide|show|toggle( "puff", {arguments}, speed ); 这是所有参数的描述- model - 效果的模式。可以是"显…

3D Tiles官方示例资源下载链接

本文列出Cesium官方提供的 3D Tiles 1.0和1.1规范的9个示例切块集&#xff08;tileset&#xff09;。 有关如何使用本地服务器托管这些示例的详细信息&#xff0c;请参阅 INSTRUCTIONS.md。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 1、Metadata Granularities …

使用 Docker 快速上手 Stability AI 的 SDXL 1.0 正式版

本篇文章&#xff0c;我们聊聊如何使用 Docker 来本地部署使用 Stability AI 刚刚推出的 SDXL 1.0&#xff0c;新一代的开源图片生成模型&#xff0c;以及在当前如何高效的使用显卡进行推理。 写在前面 好久没有写 Stable Diffusion 相关的内容了&#xff0c;趁着 SDXL 刚刚推…

k8s一站式使用笔记

前言 个人感觉比较磨心态&#xff0c;要坐住&#xff0c;因为细节太多&#xff0c;建议&#xff1a;一遍看个大概&#xff0c;二遍回来细品&#xff0c;不要当成任务&#xff0c;把握零碎时间 一、k8s安装 1、配置准备 硬件要求 内存&#xff1a;2GB或更多RAMCPU: 2核CPU或更…

Linux 之 systemctl

systemctl 可以控制软件&#xff08;一般指服务&#xff09;的启动、关闭、开机自启动 能被systemctl 管理的软件&#xff0c;一般也称 服务 系统内置服务均可被 systemctl 控制第三方软件&#xff0c;如果 自动注册了 可被systemctl 控制第三方软件&#xff0c;如果没有自动…

OS-08-事件驱动:C10M是如何实现的?

08-事件驱动&#xff1a;C10M是如何实现的&#xff1f; 你好&#xff0c;我是陶辉。 上一讲介绍了广播与组播这种一对多通讯方式&#xff0c;从这一讲开始&#xff0c;我们回到主流的一对一通讯方式。 早些年我们谈到高并发&#xff0c;总是会提到C10K&#xff0c;这是指服务…

golang反射获取结构体的值和修改值

功能&#xff1a;根据id和反射技术封装 创建和更新人的查询 一、代码二、演示 一、代码 package coryCommonimport ("context""errors""github.com/gogf/gf/v2/container/gvar""github.com/tiger1103/gfast/v3/internal/app/system/dao&qu…

Simulink仿真模块 - Data Type Conversion

Data Type Conversion将输入信号转换为指定的数据类型 在仿真库中的位置为:Simulink / 常用模块 Simulink / Signal Attributes 模型为: 说明 Data Type Conversion 模块可将任何 Simulink 数据类型的输入信号转换为您指定的数据类型。 注意 要通过指定模块参数来控…

防御第五次作业

一、结合以下问题对当天内容进行总结 1. 什么是恶意软件&#xff1f; 可以指代病毒、蠕虫、特洛伊木马、勒索软件、间谍软件、广告软件和其他类型的有害软件。恶意软件的主要区别在于它必须是故意为恶&#xff1b;任何无意间造成损害的软件均不视为恶意软件。恶意软件的总体目…

每天一个电商API分享:获取买家订单列表 API buyer_order_list

API name&#xff1a;buyer_order_list 功能介绍&#xff1a;此接口用于获取买家购买的商品订单列表&#xff0c;返回订单ID等数据。需要买家进行cookie授权。 请求参数&#xff1a; 请求参数&#xff1a;page1&tab_codeall 参数说明&#xff1a;page:页码 tab_code:all,…

教雅川学缠论03-分型

原著作者将K线走势分成四中类型&#xff0c;这四中类型&#xff0c;就叫做分型&#xff0c;注意&#xff0c;分型是K线的组合&#xff08;至少3个K线&#xff09;&#xff0c;如下 下面我们以2023年7月武汉控股日K示例 四个分型用图来表示的话&#xff0c;还是很简单的&…

FPGA学习——查找表(LUT)

查找表又名LUT&#xff0c;英文全称 Look Up Table。查找表有多个输入端口&#xff0c;但只有一个输出端口。 查找表功能上类似于存储体&#xff0c;可以把输入看作地址线&#xff0c;地址对应的“表项”看作输出。 按照输入端口个数的不同&#xff0c;查找表又可具体细分为L…

【RTT驱动框架分析02】-串口驱动分析

串口驱动学习 0.串口驱动的使用方法 //定义一个时间 struct rt_event system_event; #define SYS_EVENT_UART_RX_FINISH 0x00000001 /* UART receive data finish event *//*串口接收回调函数 Receive data callback function */ static rt_err_t uart_input(rt_device_t …

centos7安装tomcat

安装tomcat 必须依赖 JDK 环境&#xff0c;一定要提前装好JDK保证可以使用 一、下载安装包 到官网下载 上传到linux 服务器 二、安装tomcat 创建tomcat 文件夹 mkdir -p /usr/local/tomcat设置文件夹权限 chmod 757 tomcat将安装包上传至 新建文件夹 解压安装包 tar zx…

乐划锁屏充分发挥强创新能力,打造内容业新生态

乐划锁屏作为新型内容媒体,在这一市场有着众多独特的优势,不仅能够通过多场景的联动给内容创作者带来了更多可能性,还促进了更多优质作品的诞生,为用户带来更加丰富多彩的锁屏使用体验。 作为OPPO系统原生的OS应用,乐划锁屏一直致力于打造为用户提供至美内容的内容平台,吸引了全…

Echarts入门实例

Echarts是一个基于JavaScript的开源可视化库&#xff0c;用于构建交互式和可定制的图表和图形。它由百度开发并维护&#xff0c;提供了丰富多样的图表类型和强大的功能&#xff0c;使开发者能够简单快速地创建各种各样的数据可视化。 Echarts支持常见的图表类型&#xff0c;如折…

730. 机器人跳跃问题

输入样例1&#xff1a; 5 3 4 3 2 4输出样例1&#xff1a; 4输入样例2&#xff1a; 3 4 4 4输出样例2&#xff1a; 4输入样例3&#xff1a; 3 1 6 4输出样例3&#xff1a; 3代码 //首先我们要分情况讨论 //1.后面的大&#xff1a;EE-(h-E)2E-h //2.后面的小&#xff1a;…

idea插件开发-自定义语言03-Parse and PSI

在 IntelliJ 平台中解析文件是一个两步过程&#xff1a; 首先&#xff0c;构建抽象语法树 (AST)&#xff0c;定义程序的结构。AST 节点由 IDE 在内部创建&#xff0c;具体是由类ASTNode类来创建的。 每个 AST 节点都有一个关联的元素类弄IElementType实例&#xff0c;元素类型…

springboot整合myabtis+mysql

一、pom.xml <!--mysql驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--springboot与JDBC整合包--><dependency><groupId>org.springframework.b…

Banana Pi BPI-P2 Zero 开源硬件物联网开发板基准测试和评论

Banana Pi P2 Zero 和 P2 Maker 是基于 Allwinner 的 H3 和 H2 芯片组的廉价主板。它们以低廉的价格提供了一些有趣的功能&#xff0c;具有很大的吸引力&#xff0c;但由于其老化的 32 位架构和平庸的软件支持而有些令人失望。BPi-P2 板最适合作为无头边缘平台&#xff0c;具有…