华为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 y2:d表示绘制操作,(x1,y1)为矩形左上角坐标,(x2,y2)为右下角坐标;
- e x1 y1 x2 y2:e表示擦除操作,坐标含义同上。
坐标均为整数且范围在[-100, 100]内,用例保证坐标有效性。
输出描述
输出最终图形的面积。
示例1
输入:
2 d 0 2 2 0 d -1 1 1 -1
示例2
输入:
2 d 0 2 2 0 e -1 1 1 -1
说明
- 核心思路:将矩形分解为小方格(如1x1单元),通过集合存储有效方格,最终统计总数即为面积。
- 关键操作:遍历矩形范围内的所有小格,根据操作类型(d/e)增减集合内容。
Java
问题分析
我们需要处理一系列的矩形绘制和擦除操作,最终计算剩余图形的面积。每次操作会影响当前图形的覆盖区域,绘制操作会合并重叠区域,而擦除操作会移除重叠区域。核心在于高效表示和处理这些矩形的覆盖区域。
解题思路
- 小方格分解:将每个矩形分解为1x1的小方格,使用集合存储这些方格。
- 并集与差集操作:绘制操作将方格加入集合,擦除操作将方格移出集合。
- 面积计算:最终集合的大小即为剩余方格的个数,即面积。
代码实现
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 set = new HashSet(); // 存储所有被覆盖的格子 for (int i = 0; i
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。