-
Notifications
You must be signed in to change notification settings - Fork 0
/
Problem223.worksheet.sc
69 lines (65 loc) · 1.02 KB
/
Problem223.worksheet.sc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
object Solution {
def computeArea(
ax1: Int,
ay1: Int,
ax2: Int,
ay2: Int,
bx1: Int,
by1: Int,
bx2: Int,
by2: Int
): Int = {
val cx1 = if (ax1 > bx1) ax1 else bx1
val cx2 = if (ax2 < bx2) ax2 else bx2
val cy1 = if (ay1 > by1) ay1 else by1
val cy2 = if (ay2 < by2) ay2 else by2
val c = if (bx1 > ax2 || by1 > ay2 || by2 < ay1 || bx2 < ax1) {
0
} else {
((cx1 - cx2) * (cy1 - cy2))
}
val a = ((ax1 - ax2) * (ay1 - ay2)).abs
val b = ((bx1 - bx2) * (by1 - by2)).abs
a + b - c
}
}
Solution.computeArea(
ax1 = -3,
ay1 = 0,
ax2 = 3,
ay2 = 4,
bx1 = 0,
by1 = -1,
bx2 = 9,
by2 = 2
)
Solution.computeArea(
ax1 = -2,
ay1 = -2,
ax2 = 2,
ay2 = 2,
bx1 = -2,
by1 = -2,
bx2 = 2,
by2 = 2
)
Solution.computeArea(
ax1 = -2,
ay1 = -2,
ax2 = 2,
ay2 = 2,
bx1 = 3,
by1 = 3,
bx2 = 4,
by2 = 4
)
Solution.computeArea(
ax1 = -2,
ay1 = -2,
ax2 = 2,
ay2 = 2,
bx1 = -4,
by1 = -4,
bx2 = -3,
by2 = -3
)