当前位置: 首页 > article >正文

华为OD机试真题——矩形绘制(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 A卷 200分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《矩形绘制》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO


题目名称:矩形绘制


知识点:字符串、集合操作、逻辑处理
时间限制:1秒
空间限制:256MB
限定语言:不限


题目描述

实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除。

  • 当新绘制的矩形与已有图形重叠时,对图形取并集
  • 当新擦除的矩形与已有图形重叠时,对图形取差集
    给定一系列绘制和擦除操作,计算最终图形的面积。

输入描述
第一行为操作数N,接下来的N行格式为:

  • d x1 y1 x2 y2d表示绘制操作,(x1,y1)为矩形左上角坐标,(x2,y2)右下角坐标;
  • e x1 y1 x2 y2e表示擦除操作,坐标含义同上。
    坐标均为整数且范围在[-100, 100]内,用例保证坐标有效性。

输出描述
输出最终图形的面积。

示例1
输入:

2  
d 0 2 2 0  
d -1 1 1 -1  

输出:
7
在这里插入图片描述

示例2
输入:

2  
d 0 2 2 0  
e -1 1 1 -1  

输出:
3
在这里插入图片描述

说明

  • 核心思路:将矩形分解为小方格(如1x1单元),通过集合存储有效方格,最终统计总数即为面积。
  • 关键操作:遍历矩形范围内的所有小格,根据操作类型(d/e)增减集合内容。

Java

问题分析

我们需要处理一系列的矩形绘制和擦除操作,最终计算剩余图形的面积。每次操作会影响当前图形的覆盖区域,绘制操作会合并重叠区域,而擦除操作会移除重叠区域。核心在于高效表示和处理这些矩形的覆盖区域。

解题思路

  1. 小方格分解:将每个矩形分解为1x1的小方格,使用集合存储这些方格。
  2. 并集与差集操作:绘制操作将方格加入集合,擦除操作将方格移出集合。
  3. 面积计算:最终集合的大小即为剩余方格的个数,即面积。

代码实现

import java.util.HashSet;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = Integer.parseInt(scanner.nextLine()); // 读取操作数HashSet<Integer> set = new HashSet<>(); // 存储所有被覆盖的格子for (int i = 0; i < N; i++) {String[] parts = scanner.nextLine().split(" ");String op = parts[0];int x1 = Integer.parseInt(parts[1]);int y1 = Integer.parseInt(parts[2]);int x2 = Integer.parseInt(parts[3]);int y2 = Integer.parseInt(parts[4]);// 处理坐标顺序,确保xStart <= xEnd,yLow <= yHighint xStart = Math.min(x1, x2);int xEnd = Math.max(x1, x2);int yLow = Math.min(y1, y2);int yHigh = Math.max(y1, y2);// 遍历所有i和j,生成格子的唯一编码for (int x = xStart; x < xEnd; x++) { // x的范围是[xStart, xEnd)for (int y = yLow; y < yHigh; y++) { // y的范围是[yLow, yHigh)int code = x * 1000 + y; // 将坐标编码为唯一整数if (op.equals("d")) {set.add(code); // 绘制操作:添加格子} else {set.remove(code); // 擦除操作:移除格子}}}}System.out.println(set.size()); // 输出剩余格子数量即面积}
}

代码详细解析

  1. 读取输入:首先读取操作数 N,然后逐行读取每个操作。
  2. 坐标处理:确保矩形的 xy 坐标的正确顺序,以便正确遍历所有覆盖的小方格。
  3. 编码格子:将每个方格的坐标 (x, y) 编码为一个唯一的整数,例如 x * 1000 + y,避免字符串操作提升效率。
  4. 集合操作:根据操作类型(de)添加或移除对应的格子。
  5. 输出结果:集合的大小即为最终覆盖的格子数量,即所求面积。

示例测试

示例1
输入:

2
d 0 2 2 0
d -1 1 1 -1

输出:

7

解析:两个矩形覆盖的方格分别为4个和4个

相关文章:

华为OD机试真题——矩形绘制(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...

通义开源视觉感知多模态 RAG 推理框架 VRAG-RL:开启多模态推理新时代

通义实验室的自然语言智能团队&#xff0c;凭借深厚的技术积累与创新精神&#xff0c;成功研发并开源了视觉感知多模态 RAG 推理框架 VRAG-RL&#xff0c;为 AI 在复杂视觉信息处理领域带来了重大突破。 传统 RAG 方法的局限 传统的检索增强型生成&#xff08;RAG&#xff0…...

爬虫入门:从基础到实战全攻略

&#x1f9e0; 一、爬虫基础概念 1.1 爬虫定义 爬虫&#xff08;Web Crawler&#xff09;是模拟浏览器行为&#xff0c;自动向服务器发送请求并获取响应数据的一种程序。主要用于从网页中提取结构化数据&#xff0c;供后续分析、展示或存储使用。 1.2 爬虫特点 数据碎片化&…...

qemu安装risc-V 64

参考这篇文章https://developer.aliyun.com/article/1323996&#xff0c;其中在wsl下面安装可能会报错环境变量中有空格。 # clean_path.sh#!/bin/bash# 备份旧 PATH OLD_PATH"$PATH"# 过滤掉包含空格、制表符、换行的路径 CLEAN_PATH"" IFS: read -ra PA…...

JDBC连不上mysql:Unable to load authentication plugin ‘caching_sha2_password‘.

最近为一个spring-boot项目下了mysql-9.3.0&#xff0c;结果因为mysql版本太新一直报错连不上。 错误如下&#xff1a; 2025-06-01 16:19:43.516 ERROR 22088 --- [http-nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispat…...

AsyncIOScheduler与BackgroundScheduler的线程模型对比

1. BackgroundScheduler的线程机制‌ ‌多线程模型‌&#xff1a;BackgroundScheduler基于线程池执行任务&#xff0c;默认通过ThreadPoolExecutor创建独立线程处理任务&#xff0c;每个任务运行在单独的线程中&#xff0c;主线程不会被阻塞。‌适用场景‌&#xff1a;适合同步…...

Python+MongoDb使用手册(精简)

这里是学了下面链接的内容&#xff0c;加上一些自己学习的内容综合的&#xff0c;大家也可以去看看这篇文章&#xff0c;写的特别好 【python】在Python中操作MongoDB的详细用法教程与实战案例分享_python轻松入门&#xff0c;基础语法到高阶实战教学-CSDN专栏 1 库&#xff1…...

前端面经 协商缓存和强缓存

HHTTPTTP缓存 协商缓存和强缓存 核心区别是否向服务器发起请求验证资源过期 强缓存 浏览器直接读取本地缓存,不发请求 HTTP响应头 Cache-Control:max-age3600资源有效期 Expires优先级低 如果有效浏览器返回200(浏览器换伪造的200) 应用静态资源 协商缓存 OK如果 1强缓…...

MacOS安装Docker Desktop并汉化

1. 安装Docker Desktop 到Docker Desktop For Mac下载对应系统的Docker Desktop 安装包&#xff0c;下载后安装&#xff0c;没有账号需要注册&#xff0c;然后登陆即可。 2. 汉化 前往汉化包下载链接下载对应系统的.asar文件 然后将安装好的文件覆盖原先的文件app.asar文件…...

Centos系统搭建主备DNS服务

目录 一、主DNS服务器配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建正向区域文件 4.创建区域数据文件 5.检查配置语法并重启服务 二、从DNS服务配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建缓存目录 4.启动并设置开机自启 一、主DNS服务器配置 1.安装 BIN…...

VUE项目部署IIS服务器手册

IIS部署Vue项目完整手册 &#x1f4cb; 目录 基础概念准备工作Vue项目构建web.config详解IIS部署步骤不同场景配置常见问题实用配置模板 基础概念 Vue单页应用&#xff08;SPA&#xff09;工作原理 重要理解&#xff1a;Vue项目是单页应用&#xff0c;这意味着&#xff1a;…...

使用 HTML + JavaScript 实现在线考试系统

在现代的在线教育平台中&#xff0c;在线考试系统是不可或缺的一部分。本文将通过一个完整的示例&#xff0c;演示如何使用 HTML、CSS 和 JavaScript 构建一个支持多种题型的在线考试系统。 效果演示 项目概述 本项目主要包含以下核心功能&#xff1a; 支持4种常见题型&…...

谷歌工作自动化——仙盟大衍灵机——仙盟创梦IDE

下载地址 https://chromewebstore.google.com/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd https://chrome.zzzmh.cn/info/mooikfkahbdckldjjndioackbalphokd...

嵌入式(C语言篇)Day13

嵌入式Day13 一段话总结 文档主要介绍带有头指针和尾指针的单链表的实现及操作&#xff0c;涵盖创建、销毁、头插、尾插、按索引/数据增删查、遍历等核心操作&#xff0c;强调头插/尾插时间复杂度为O(1)&#xff0c;按索引/数据操作需遍历链表、时间复杂度为O(n)&#xff0c;并…...

Oracle 的V$LOCK 视图详解

Oracle 的V$LOCK 视图详解 V$LOCK 是 Oracle 数据库中最重要的动态性能视图之一&#xff0c;用于显示当前数据库中锁的持有和等待情况。 一、V$LOCK 视图结构 列名数据类型描述SIDNUMBER持有或等待锁的会话标识符TYPEVARCHAR2(2)锁类型标识符ID1NUMBER锁标识符1&#xff08;…...

秒杀系统—1.架构设计和方案简介

大纲 1.秒杀系统的方案设计要点 2.秒杀系统的数据 页面 接口的处理方案 3.秒杀系统的负载均衡方案底层相关 4.秒杀系统的限流机制和超卖问题处理 5.秒杀系统的异步下单和高可用方案 1.秒杀系统的方案设计要点 (1)秒杀促销活动的数据处理 (2)秒杀促销活动的页面处理 (…...

基于FashionMnist数据集的自监督学习(生成式自监督学习AE算法)

目录 一&#xff0c;生成式自监督学习 1.1 简介 1.2 核心思想 1.3 常见算法 1.3.1 自动编码器&#xff08;Autoencoder&#xff09; 1.3.2 生成对抗网络&#xff08;GANs&#xff09; 1.3.3 变分自编码器&#xff08;VAE&#xff09; 1.3.4 Transformer-based 模型&…...

从监控到告警:Prometheus+Grafana+Alertmanager+告警通知服务全链路落地实践

文章目录 一、引言1.1 监控告警的必要性1.2 监控告警的基本原理1.2.1 指标采集与存储1.2.2 告警规则与触发机制1.2.3 多渠道通知与闭环 二、技术选型与架构设计2.1 为什么选择 Prometheus 及其生态2.1.1 Prometheus 优势分析2.1.2 Grafana 可视化能力2.1.3 Alertmanager 灵活告…...

AUTOSAR图解==>AUTOSAR_EXP_AIADASAndVMC

AUTOSAR高级驾驶辅助系统与车辆运动控制接口详解 基于AUTOSAR R22-11标准的ADAS与VMC接口规范解析 目录 1. 引言2. 术语和概念说明 2.1 坐标系统2.2 定义 2.2.1 乘用车重心2.2.2 极坐标系统2.2.3 车辆加速度/推进力方向2.2.4 倾斜方向2.2.5 方向盘角度2.2.6 道路变量2.2.7 曲率…...

WPF【09】WPF基础入门 (三层架构与MVC架构)

9-2 【操作】WPF 基础入门 新建一项目 Create a new project - WPF Application (A project for creating a .NET Core WPF Application) - Next - .NET 5.0 (Current) - Create 项目创建完成&#xff0c;VS自动打开 GUI用户界面&#xff0c;格式是 .xaml文件&#xff0c;跟xm…...

macOS 风格番茄计时器:设计与实现详解

macOS 风格番茄计时器&#xff1a;设计与实现详解 概述 本文介绍一款采用 macOS 设计语言的网页版番茄计时器实现。该计时器完全遵循苹果的人机界面指南(HIG)&#xff0c;提供原汁原味的 macOS 使用体验&#xff0c;同时具备响应式设计和深色模式支持。 核心特性 原生 macOS…...

中文NLP with fastai - Fastai Part4

使用fastai进行自然语言处理 在之前的教程中,我们已经了解了如何利用预训练模型并对其进行微调,以执行图像分类任务(MNIST)。应用于图像的迁移学习原理同样也可以应用于NLP任务。在本教程中,我们将使用名为AWD_LSTM的预训练模型来对中文电影评论进行分类。AWD_LSTM是LSTM…...

oracle goldengate实现远程抽取postgresql 到 postgresql的实时同步【绝对无坑版,亲测流程验证】

oracle goldengate实现postgresql 到 postgresql的实时同步 源端&#xff1a;postgresql1 -> postgresql2 流复制主备同步 目标端&#xff1a;postgresql 数据库版本&#xff1a;postgresql 12.14 ogg版本&#xff1a;21.3 架构图&#xff1a; 数据库安装以及流复制主备…...

【MYSQL】索引篇(一)

1.为什么要有索引 索引的本质是一种数据结构&#xff0c;她的作用其实就是更好更快的帮我们找到数据库中存储的数据&#xff0c;就好比一本书&#xff0c;你想要找到指定的内容&#xff0c;但是如果在没有目录的情况下&#xff0c;你只能一页页的进行寻找&#xff0c;这样效率…...

ISCC-2025-web-wp

web 校赛 校赛靠着ENOCH师傅发力&#xff0c;也是一路躺进了区域赛&#xff0c;E师傅不好意思发这抽象比赛的wp(这比赛确实啥必到让人大开眼界&#xff0c;反正明年我是肯定不会打了)&#xff0c;我就顺手要过来连着区域赛的一起发了 web 150分 按照提示进入/includes/fla…...

鸿蒙分辨率

鸿蒙手机App界面开发&#xff0c;UI元素应该以什么哪种屏幕尺寸为基准&#xff1f;换言之&#xff0c;做鸿蒙手机APP UI设计时&#xff0c;应该以哪种屏 PX转VP 华为开发者问答 | 华为开发者联盟 各单位换算API 华为开发者问答 | 华为开发者联盟 开源鸿蒙更改DPI 如何在Op…...

@Docker Compose 部署 Pushgateway

文章目录 Docker Compose 部署 Pushgateway1. 目的2. 适用范围3. 先决条件4. 部署步骤4.1 创建项目目录4.2 创建 docker-compose.yml 文件4.3 启动 Pushgateway 服务4.4 验证服务运行状态4.5 测试 Pushgateway 访问 5. 配置 Prometheus 采集 Pushgateway 数据6. 日常维护6.1 查…...

我们来学mysql -- 从库重启,是否同步主库数据

从库重启后&#xff0c;通常不需要重新复制主库的全部数据&#xff0c;然后再开启复制。MySQL 的主从复制机制设计了优雅的恢复流程&#xff0c;可以在从库重启后继续从上次中断的位置继续复制&#xff0c;前提是相关的日志和状态信息完整。 以下是详细解释&#xff1a; 从库…...

King3399(ubuntu文件系统)iic(i2c)功能测试

0 引言 前面两篇博文简要介绍了板子上uart部分的内容&#xff0c;但在驱动开发时&#xff0c;我们遇到的外设更多的是以i2c或spi进行通信&#xff0c;本文将对king3399的i2c进行测试并对硬件电路、设备树与驱动程序进行分析 如果使用的i2c设备不是mma8452&#xff0c;建议先看…...

德思特新闻 | 德思特与es:saar正式建立合作伙伴关系

德思特新闻 2025年5月9日&#xff0c;德思特科技有限公司&#xff08;以下简称“德思特”&#xff09;与德国嵌入式系统专家es:saar GmbH正式达成合作伙伴关系。此次合作旨在将 es:saar 的先进嵌入式开发与测试工具引入中国及亚太市场&#xff0c;助力本地客户提升产品开发效率…...