Skip to content

Commit c03b439

Browse files
committed
Solve #223
1 parent e21126f commit c03b439

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/n0223_rectangle_area.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,18 @@ pub struct Solution {}
2222

2323
// submission codes start here
2424

25+
// mention the integer divition
2526
impl Solution {
2627
pub fn compute_area(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32, h: i32) -> i32 {
27-
0
28+
let center1 = ((a+c), (b+d));
29+
let center2 = ((e+g), (f+h));
30+
let rect1 = (c-a,d-b);
31+
let rect2 = (g-e,h-f);
32+
let x_intersect = i32::min((rect1.0 + rect2.0 - (center1.0-center2.0).abs()), i32::min(2 * rect1.0, 2 * rect2.0)) / 2;
33+
let x_intersect = if x_intersect < 0 { 0 } else { x_intersect };
34+
let y_intersect = i32::min((rect1.1 + rect2.1 - (center1.1-center2.1).abs()), i32::min(2 * rect1.1, 2 * rect2.1)) / 2;
35+
let y_intersect = if y_intersect < 0 { 0 } else { y_intersect };
36+
rect1.0 * rect1.1 - x_intersect * y_intersect + rect2.0 * rect2.1
2837
}
2938
}
3039

@@ -35,5 +44,10 @@ mod tests {
3544
use super::*;
3645

3746
#[test]
38-
fn test_223() {}
47+
fn test_223() {
48+
assert_eq!(Solution::compute_area(0, 0, 0, 0, 0, 0, 0, 0), 0);
49+
assert_eq!(Solution::compute_area(-3, 0, 3, 4, 0, -1, 9, 2), 45);
50+
assert_eq!(Solution::compute_area(-2, -2, 2, 2, -2, -2, 2, 2), 16);
51+
assert_eq!(Solution::compute_area(-2, -2, 2, 2, -1, 4, 1, 6), 20);
52+
}
3953
}

0 commit comments

Comments
 (0)