Skip to content

Commit e758c0f

Browse files
author
ruislan
committed
solved q223
1 parent 83ca7fc commit e758c0f

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/q/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ mod q217;
142142
mod q219;
143143
mod q220;
144144
mod q222;
145+
mod q223;
145146
mod q224;
146147
mod q225;
147148
mod q226;

src/q/q223.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
use crate::q::Solution;
2+
3+
#[allow(unused)]
4+
impl Solution {
5+
pub fn compute_area(ax1: i32, ay1: i32, ax2: i32, ay2: i32, bx1: i32, by1: i32, bx2: i32, by2: i32) -> i32 {
6+
// 方法1
7+
// 关键点在有没有覆盖区域,有覆盖区域,就需要减去覆盖即可
8+
// 判断有没有覆盖,我们可以从两个方向
9+
// x轴:如果a的最低x都比b的最高x大或等于,那么说明y轴怎么变都不会相交
10+
// 同理y轴也是一样
11+
// AC 4ms 2.1mb 3080/3080
12+
let area = (ax2 - ax1) * (ay2 - ay1) + (bx2 - bx1) * (by2 - by1);
13+
if ax2 <= bx1 || bx2 <= ax1 || ay1 >= by2 || by1 >= ay2 {
14+
area
15+
} else {
16+
area - (ax2.min(bx2) - ax1.max(bx1)) * (ay2.min(by2) - ay1.max(by1))
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)