Skip to content

Commit 34171a1

Browse files
committed
leetcode
1 parent 01f5bd0 commit 34171a1

File tree

4 files changed

+455
-0
lines changed

4 files changed

+455
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ This repo contain leetcode solution using DART and GO programming language. Most
133133
- [**342.** Power of Four](PowerOfFour/power_of_four.dart)
134134
- [**344.** Reverse String](ReverseString/reverse_string.dart)
135135
- [**349.** Intersection of Two Arrays](IntersectionOfTwoArrays/intersection_of_two_arrays.dart)
136+
- [**223.** Rectangle Area](RectangleArea/rectangle_area.dart)
136137

137138
## Reach me via
138139

RectangleArea/rectangle_area.dart

+213
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
/*
2+
3+
-* 223. Rectangle Area *-
4+
5+
Given the coordinates of two rectilinear rectangles in a 2D plane, return the total area covered by the two rectangles.
6+
7+
The first rectangle is defined by its bottom-left corner (ax1, ay1) and its top-right corner (ax2, ay2).
8+
9+
The second rectangle is defined by its bottom-left corner (bx1, by1) and its top-right corner (bx2, by2).
10+
11+
12+
13+
Example 1:
14+
15+
Rectangle Area
16+
Input: ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2
17+
Output: 45
18+
Example 2:
19+
20+
Input: ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2
21+
Output: 16
22+
23+
24+
Constraints:
25+
26+
-104 <= ax1 <= ax2 <= 104
27+
-104 <= ay1 <= ay2 <= 104
28+
-104 <= bx1 <= bx2 <= 104
29+
-104 <= by1 <= by2 <= 104
30+
31+
*/
32+
33+
import 'dart:math';
34+
35+
class A {
36+
int computeArea(
37+
int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
38+
// Calculating Area Of A and B
39+
int areaA = (ax2 - ax1) * (ay2 - ay1);
40+
int areaB = (bx2 - bx1) * (by2 - by1);
41+
42+
// Calculating The Left Boundary
43+
int leftBoundary = max(ax1, bx1);
44+
45+
// Calculating The Right Boundary
46+
int rightBoundary = min(bx2, ax2);
47+
48+
// Calculating The Up Boundary
49+
int upperBoundary = min(by2, ay2);
50+
51+
// Calculating The Down Boundary
52+
int lowerBoundary = max(ay1, by1);
53+
54+
// Total Area
55+
int totalArea = areaA + areaB;
56+
57+
// If Both Rectangle Overlaps
58+
if (rightBoundary > leftBoundary && upperBoundary > lowerBoundary)
59+
totalArea -=
60+
((rightBoundary - leftBoundary) * (upperBoundary - lowerBoundary));
61+
62+
return totalArea;
63+
}
64+
}
65+
66+
class B {
67+
int computeArea(
68+
int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
69+
int a = (ax2 - ax1) * (ay2 - ay1);
70+
int b = (bx2 - bx1) * (by2 - by1);
71+
72+
if (ax1 >= bx2 || ax2 <= bx1 || ay2 <= by1 || ay1 >= by2) return a + b;
73+
74+
return (a +
75+
b -
76+
(min(bx2, ax2) - max(ax1, bx1)) * (min(ay2, by2) - max(ay1, by1)))
77+
.toInt();
78+
}
79+
}
80+
81+
class C {
82+
int computeArea(
83+
int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
84+
if (ax1 <= bx1 && ay1 <= by1 && ax2 >= bx2 && ay2 >= by2)
85+
return (ax2 - ax1) * (ay2 - ay1);
86+
if (ax1 >= bx1 && ay1 >= by1 && ax2 <= bx2 && ay2 <= by2)
87+
return (bx2 - bx1) * (by2 - by1);
88+
if (ax1 >= bx1 && ax2 <= bx2 && ay2 >= by2 && ay1 <= by1)
89+
return (ax2 - ax1) * (ay2 - ay1) -
90+
(ax2 - ax1) * (by2 - by1) +
91+
(bx2 - bx1) * (by2 - by1);
92+
if (ax1 <= bx1 && ax2 >= bx2 && ay2 <= by2 && ay1 >= by1)
93+
return (ax2 - ax1) * (ay2 - ay1) -
94+
(bx2 - bx1) * (ay2 - ay1) +
95+
(bx2 - bx1) * (by2 - by1);
96+
if (ax2 >= bx1 && ax1 <= bx1 && ay2 >= by2 && ay1 <= by1)
97+
return (ax2 - ax1) * (ay2 - ay1) -
98+
(ax2 - bx1) * (by2 - by1) +
99+
(bx2 - bx1) * (by2 - by1);
100+
if (by2 >= ay1 && by2 <= ay2 && bx1 >= ax1 && bx2 <= ax2)
101+
return (ax2 - ax1) * (ay2 - ay1) -
102+
(bx2 - bx1) * (by2 - ay1) +
103+
(bx2 - bx1) * (by2 - by1);
104+
if (bx2 >= ax1 && bx2 <= ax2 && by1 >= ay1 && by2 <= ay2)
105+
return (ax2 - ax1) * (ay2 - ay1) -
106+
(bx2 - ax1) * (by2 - by1) +
107+
(bx2 - bx1) * (by2 - by1);
108+
if (by1 >= ay1 && by1 <= ay2 && bx1 >= ax1 && bx2 <= ax2)
109+
return (ax2 - ax1) * (ay2 - ay1) -
110+
(ay2 - by1) * (bx2 - bx1) +
111+
(bx2 - bx1) * (by2 - by1);
112+
if (bx2 >= ax1 && bx1 <= ax1 && by2 >= ay2 && by1 <= ay1)
113+
return (ax2 - ax1) * (ay2 - ay1) -
114+
(bx2 - ax1) * (ay2 - ay1) +
115+
(bx2 - bx1) * (by2 - by1);
116+
if (ay2 >= by1 && ay2 <= by2 && ax1 >= bx1 && ax2 <= bx2)
117+
return (ax2 - ax1) * (ay2 - ay1) -
118+
(ax2 - ax1) * (ay2 - by1) +
119+
(bx2 - bx1) * (by2 - by1);
120+
if (ax2 >= bx1 && ax2 <= bx2 && ay1 >= by1 && ay2 <= by2)
121+
return (ax2 - ax1) * (ay2 - ay1) -
122+
(ax2 - bx1) * (ay2 - ay1) +
123+
(bx2 - bx1) * (by2 - by1);
124+
if (ay1 >= by1 && ay1 <= by2 && ax1 >= bx1 && ax2 <= bx2)
125+
return (ax2 - ax1) * (ay2 - ay1) -
126+
(by2 - ay1) * (ax2 - ax1) +
127+
(bx2 - bx1) * (by2 - by1);
128+
if (ax2 >= bx1 && bx2 >= ax2 && ay1 >= by1 && by2 >= ay1)
129+
return (ax2 - ax1) * (ay2 - ay1) -
130+
(ax2 - bx1) * (by2 - ay1) +
131+
(bx2 - bx1) * (by2 - by1);
132+
if (bx2 >= ax1 && ax1 >= bx1 && by1 <= ay1 && ay1 <= by2)
133+
return (ax2 - ax1) * (ay2 - ay1) -
134+
(bx2 - ax1) * (by2 - ay1) +
135+
(bx2 - bx1) * (by2 - by1);
136+
if (bx2 >= ax1 && ax1 >= bx1 && by2 >= ay2 && by1 <= ay2)
137+
return (ax2 - ax1) * (ay2 - ay1) -
138+
(bx2 - ax1) * (ay2 - by1) +
139+
(bx2 - bx1) * (by2 - by1);
140+
if (ax2 >= bx1 && ax2 <= bx2 && by1 <= ay2 && by2 >= ay2)
141+
return (ax2 - ax1) * (ay2 - ay1) -
142+
(ax2 - bx1) * (ay2 - by1) +
143+
(bx2 - bx1) * (by2 - by1);
144+
return (ax2 - ax1) * (ay2 - ay1) + (bx2 - bx1) * (by2 - by1);
145+
}
146+
}
147+
148+
class D {
149+
int computeArea(
150+
int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
151+
if (ax1 <= bx1 && ay1 <= by1 && ax2 >= bx2 && ay2 >= by2)
152+
return (ax2 - ax1) * (ay2 - ay1);
153+
if (ax1 >= bx1 && ay1 >= by1 && ax2 <= bx2 && ay2 <= by2)
154+
return (bx2 - bx1) * (by2 - by1);
155+
if (ax1 >= bx1 && ax2 <= bx2 && ay2 >= by2 && ay1 <= by1)
156+
return (ax2 - ax1) * (ay2 - ay1) -
157+
(ax2 - ax1) * (by2 - by1) +
158+
(bx2 - bx1) * (by2 - by1);
159+
if (ax1 <= bx1 && ax2 >= bx2 && ay2 <= by2 && ay1 >= by1)
160+
return (ax2 - ax1) * (ay2 - ay1) -
161+
(bx2 - bx1) * (ay2 - ay1) +
162+
(bx2 - bx1) * (by2 - by1);
163+
if (ax2 >= bx1 && ax1 <= bx1 && ay2 >= by2 && ay1 <= by1)
164+
return (ax2 - ax1) * (ay2 - ay1) -
165+
(ax2 - bx1) * (by2 - by1) +
166+
(bx2 - bx1) * (by2 - by1);
167+
if (by2 >= ay1 && by2 <= ay2 && bx1 >= ax1 && bx2 <= ax2)
168+
return (ax2 - ax1) * (ay2 - ay1) -
169+
(bx2 - bx1) * (by2 - ay1) +
170+
(bx2 - bx1) * (by2 - by1);
171+
if (bx2 >= ax1 && bx2 <= ax2 && by1 >= ay1 && by2 <= ay2)
172+
return (ax2 - ax1) * (ay2 - ay1) -
173+
(bx2 - ax1) * (by2 - by1) +
174+
(bx2 - bx1) * (by2 - by1);
175+
if (by1 >= ay1 && by1 <= ay2 && bx1 >= ax1 && bx2 <= ax2)
176+
return (ax2 - ax1) * (ay2 - ay1) -
177+
(ay2 - by1) * (bx2 - bx1) +
178+
(bx2 - bx1) * (by2 - by1);
179+
if (bx2 >= ax1 && bx1 <= ax1 && by2 >= ay2 && by1 <= ay1)
180+
return (ax2 - ax1) * (ay2 - ay1) -
181+
(bx2 - ax1) * (ay2 - ay1) +
182+
(bx2 - bx1) * (by2 - by1);
183+
if (ay2 >= by1 && ay2 <= by2 && ax1 >= bx1 && ax2 <= bx2)
184+
return (ax2 - ax1) * (ay2 - ay1) -
185+
(ax2 - ax1) * (ay2 - by1) +
186+
(bx2 - bx1) * (by2 - by1);
187+
if (ax2 >= bx1 && ax2 <= bx2 && ay1 >= by1 && ay2 <= by2)
188+
return (ax2 - ax1) * (ay2 - ay1) -
189+
(ax2 - bx1) * (ay2 - ay1) +
190+
(bx2 - bx1) * (by2 - by1);
191+
if (ay1 >= by1 && ay1 <= by2 && ax1 >= bx1 && ax2 <= bx2)
192+
return (ax2 - ax1) * (ay2 - ay1) -
193+
(by2 - ay1) * (ax2 - ax1) +
194+
(bx2 - bx1) * (by2 - by1);
195+
if (ax2 >= bx1 && bx2 >= ax2 && ay1 >= by1 && by2 >= ay1)
196+
return (ax2 - ax1) * (ay2 - ay1) -
197+
(ax2 - bx1) * (by2 - ay1) +
198+
(bx2 - bx1) * (by2 - by1);
199+
if (bx2 >= ax1 && ax1 >= bx1 && by1 <= ay1 && ay1 <= by2)
200+
return (ax2 - ax1) * (ay2 - ay1) -
201+
(bx2 - ax1) * (by2 - ay1) +
202+
(bx2 - bx1) * (by2 - by1);
203+
if (bx2 >= ax1 && ax1 >= bx1 && by2 >= ay2 && by1 <= ay2)
204+
return (ax2 - ax1) * (ay2 - ay1) -
205+
(bx2 - ax1) * (ay2 - by1) +
206+
(bx2 - bx1) * (by2 - by1);
207+
if (ax2 >= bx1 && ax2 <= bx2 && by1 <= ay2 && by2 >= ay2)
208+
return (ax2 - ax1) * (ay2 - ay1) -
209+
(ax2 - bx1) * (ay2 - by1) +
210+
(bx2 - bx1) * (by2 - by1);
211+
return (ax2 - ax1) * (ay2 - ay1) + (bx2 - bx1) * (by2 - by1);
212+
}
213+
}

RectangleArea/rectangle_area.go

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package main
2+
3+
/*
4+
5+
int computeArea(
6+
int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
7+
int a = (ax2 - ax1) * (ay2 - ay1);
8+
int b = (bx2 - bx1) * (by2 - by1);
9+
10+
if (ax1 >= bx2 || ax2 <= bx1 || ay2 <= by1 || ay1 >= by2) return a + b;
11+
12+
return (a +
13+
b -
14+
(min(bx2, ax2) - max(ax1, bx1)) * (min(ay2, by2) - max(ay1, by1)))
15+
.toInt();
16+
}
17+
18+
*/
19+
20+
func computeArea(ax1 int, ay1 int, ax2 int, ay2 int, bx1 int, by1 int, bx2 int, by2 int) int {
21+
var a int = (ax2 - ax1) * (ay2 - ay1)
22+
var b int = (bx2 - bx1) * (by2 - by1)
23+
if ax1 >= bx2 || ax2 <= bx1 || ay2 <= by1 || ay1 >= by2 {
24+
return a + b
25+
}
26+
27+
return a +
28+
b -
29+
(min(bx2, ax2)-max(ax1, bx1))*(min(ay2, by2)-max(ay1, by1))
30+
}
31+
32+
func min(a, b int) int {
33+
if a < b {
34+
return a
35+
}
36+
return b
37+
}
38+
39+
func max(a, b int) int {
40+
if a > b {
41+
return a
42+
}
43+
return b
44+
}

0 commit comments

Comments
 (0)