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

华为OD机试真题——矩形相交的面积(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 A卷 100分 题型

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

华为OD机试真题《矩形相交的面积》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C

GO


题目名称:矩形相交的面积


  1. 知识点:几何计算、边界判断
  2. 时间限制:1秒
  3. 空间限制:256MB
  4. 限定语言:不限

题目描述

在平面直角坐标系中,给定3个矩形,每个矩形由其左上角坐标(x, y)、宽度(w)和高度(h)表示,格式为 (x, y, w, h)。其中:

  • x, y 为矩形左上角的坐标,满足 -1000 ≤ x, y < 1000
  • w, h 为正整数,表示矩形向右延伸 w 单位、向下延伸 h 单位。
  • 矩形区域定义为:x轴范围 [x, x+w),y轴范围 [y-h, y)

输入描述
输入共3行,每行包含4个整数,分别表示一个矩形的 x, y, w, h

输出描述
输出3个矩形相交区域的面积,若不相交则输出 0

示例
输入:

1 6 4 4  
3 5 3 4  
0 3 7 3  

输出:

2  

说明:三个矩形相交的区域面积为2。


Java

问题分析

我们需要计算三个矩形的相交区域面积。每个矩形由其左上角坐标 (x, y)、宽度 (w) 和高度 (h) 定义,其中矩形在 x 轴的范围是 [x, x + w),在 y 轴的范围是 [y - h, y)。三个矩形相交的面积是它们在 x 轴和 y 轴上共同重叠区域的乘积。

解题思路

  1. 解析输入:读取三个矩形的参数。
  2. 计算每个矩形的坐标范围:将每个矩形的 x 轴和 y 轴范围表示为区间。
  3. 求交集:找到三个矩形在 x 轴和 y 轴上的最大左边界和最小右边界。
  4. 计算面积:若交集存在(即左边界 < 右边界),面积即为宽高乘积,否则为 0。

代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取并解析三个矩形的参数int[][] rects = new int[3][4];for (int i = 0; i < 3; i++) {String line = scanner.nextLine().trim();String[] parts = line.split("\\s+");for (int j = 0; j < 4; j++) {rects[i][j] = Integer.parseInt(parts[j]);}}// 计算每个矩形的x轴和y轴范围int[] xStarts = new int[3];int[] xEnds = new int[3];int[] yStarts = new int[3];int[] yEnds = new int[3];for (int i = 0; i < 3; i++) {int x = rects[i][0];int y = rects[i][1];int w = rects[i][2];int h = rects[i][3];xStarts[i] = x;                // x轴左边界xEnds[i] = x + w;              // x轴右边界yStarts[i] = y - h;            // y轴下边界yEnds[i] = y;                  // y轴上边界}// 计算x轴的交集:最大左边界和最小右边界int maxXStart = Math.max(xStarts[0], Math.max(xStarts[1], xStarts[2]));int minXEnd = Math.min(xEnds[0], Math.min(xEnds[1], xEnds[2]));int width = minXEnd - maxXStart;   // 交集宽度// 计算y轴的交集:最大下边界和最小上边界int maxYStart = Math.max(yStarts[0], Math.max(yStarts[1], yStarts[2]));int minYEnd = Math.min(yEnds[0], Math.min(yEnds[1], yEnds[2]));int height = minYEnd - max
http://www.xdnf.cn/news/704323.html

相关文章:

  • spring4第4课-ioc控制反转-详解如何注入参数
  • Flutte ListView 列表组件
  • 主流Markdown编辑器的综合评测与推荐
  • <el-date-picker>组件传参时,选中时间和传参偏差8小时
  • allWebPlugin中间件VLC专用版之录像功能介绍
  • 测试Bug篇
  • Flutter GridView网格组件
  • 测试概念 和 bug
  • 003 flutter初始文件讲解(2)
  • 使用 Flutter 开发 App 时,想要根据 Figma 设计稿开发出响应式 UI 界面
  • 基于python脚本进行Maxwell自动化仿真
  • 代码随想录算法训练营第五十三天
  • Oracle/openGauss中,DATE/TIMESTAMP与数字日期/字符日期比较
  • 计算机网络之差错控制中的 CRC(循环冗余校验码)
  • 软件工程 3.0:智能驱动的软件新时代
  • LVS+Keepalived高可用集群
  • Nat Commun项目文章 ▏小麦CUTTag助力解析转录因子TaTCP6调控小麦氮磷高效利用机制
  • LVS + Keepalived 高可用群集
  • Redis Stack常见拓展
  • K6 是什么
  • ubuntu24 安装MongoDB-6.0.24 数据库操作步骤和配置参数说明
  • QuickBASIC QB64 支持 64 位系统和跨平台Linux/MAC OS
  • 使用Redisson实现分布式锁发现的【订阅超时】Subscribe timeout: (7500ms)
  • AI绘画:Stable Diffusion从入门到精通(系列教程)
  • ONLYOFFICE文档API:编辑器的品牌定制化
  • 算法训练第二天
  • 【AI智能体】Coze 插件从使用到实战详解
  • 从法律层面剖析危化品证书:两证一证背后的安全逻辑
  • Perforce P4产品简介:无限扩展+全球协作+安全管控+工具集成(附下载)
  • Android 异步编程中协程的完整实战示例