华为OD E卷(100分)42-矩形相交面积

前言

工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

在平面直角坐标系中,给出 3 个矩形的位置信息。每个矩形由左上角坐标 (x,y) 和宽度 h 表示。

矩形的边平行于坐标轴,宽度向右延伸,高度向下延伸。请计算这 3 个矩形重叠部分的面积。

输入

输入共 3 行,每行包含 4 个整数

x、y、w、h,分别表示一个矩形的左上角 x 坐标、左上角 y 坐标、宽度和高度。

输出

输出一个整数,表示 3 个矩形重叠部分的面积。如果没有重叠,则输出 0。

示例

示例1

输入

1 6 4 4

3 5 3 4

0 3 7 3
输出

2
说明:

三个矩形分别为:

  1. (1,6) 到 (5,2)

  2. (3,5) 到 (6,1)

  3. (0,3) 到 (7,0) 重叠部分面积为 2

数据范围

  • −1000≤x,y<1000
  • w,h 为正整数

解题思路

矩阵填充。

题解

Java实现

java 复制代码
package huawei.e100;

import java.util.Arrays;
import java.util.Scanner;

/**
* @author arnold
* @date 2024年12月27日
* 矩形相交面积

*/
public class T42 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int[][] data = new int[2000][2000];
			for (int i = 0; i < data.length; i++) {
				Arrays.fill(data[i], 0);
			}
			for (int i = 0; i < 3; i++) {
				int x = sc.nextInt();
				int y = sc.nextInt();
				int w = sc.nextInt();
				int h = sc.nextInt();
				for(int m = x; m< x+w; m++) {
					//高度向下延伸
					for(int n = y; n > y-h; n--) { 
						data[m][n] += 1;
					}
				}
			}
			int area = 0;
			for (int i = 0; i < data.length; i++) {
				area += Arrays.stream(data[i]).filter(a -> a==3).count();
			}
			System.out.println(area);
		}

	}

}
相关推荐
熬了夜的程序员8 天前
【华为机试】208. 实现 Trie (前缀树)
数据结构·算法·华为od·华为
哪 吒16 天前
【2025C卷】华为OD机试九日集训第3期 - 按算法分类,由易到难,提升编程能力和解题技巧
python·算法·华为od·华为od机试·2025c卷
熬了夜的程序员18 天前
【华为机试】34. 在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·华为od·华为·面试·golang
哪 吒1 个月前
【2025B卷】华为OD机试九日集训第2期 - 按算法分类,由易到难,提升编程能力和解题技巧(Python/JS/C/C++)
python·算法·华为od·华为od机试·2025b卷
蜗牛的旷野1 个月前
华为OD机试_2025_查找单入口空闲区域(Python,100分)(附详细解题思路)
python·算法·华为od
_不会dp不改名_1 个月前
华为OD 二维伞的雨滴效应
华为od
_不会dp不改名_1 个月前
华为OD 数字游戏
华为od
YOLO大师1 个月前
华为OD机试 2025B卷 - 小明减肥(C++&Python&JAVA&JS&C语言)
c++·python·华为od·华为od机试·华为od2025b卷·华为机试2025b卷·华为od机试2025b卷
哪 吒1 个月前
2025B卷 - 华为OD机试七日集训第5期 - 按算法分类,由易到难,循序渐进,玩转OD(Python/JS/C/C++)
python·算法·华为od·华为od机试·2025b卷
蜗牛的旷野2 个月前
华为OD机试_2025 B卷_矩形相交的面积(Python,100分)(附详细解题思路)
开发语言·python·华为od