Skip to content

Commit f84ab51

Browse files
committed
update 729 java
1 parent 778c550 commit f84ab51

File tree

2 files changed

+152
-0
lines changed

2 files changed

+152
-0
lines changed

leetcode_java/src/main/java/LeetCodeJava/Array/MyCalendar1.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,59 @@ public boolean book(int start, int end) {
137137
}
138138
}
139139

140+
// V0-2
141+
class MyCalendar_0_2 {
142+
143+
List<List<Integer>> booked;
144+
145+
public MyCalendar_0_2() {
146+
this.booked = new ArrayList<>();
147+
}
148+
149+
public boolean book(int startTime, int endTime) {
150+
151+
List<Integer> tmp = new ArrayList<>();
152+
tmp.add(startTime);
153+
tmp.add(endTime);
154+
155+
if (this.booked.isEmpty()) {
156+
this.booked.add(tmp);
157+
return true;
158+
}
159+
160+
for (List<Integer> x : booked) {
161+
int existingStart = x.get(0);
162+
int existingEnd = x.get(1);
163+
/**
164+
*
165+
* 3 OVERLAP CASES
166+
*
167+
*
168+
* |----| (new)
169+
* |------| (old)
170+
*
171+
* or
172+
*
173+
* |-----| (new)
174+
* |----| (old)
175+
*
176+
* or
177+
*
178+
* |---| (new)
179+
* |----------| (old)
180+
*
181+
*
182+
*/
183+
if (startTime < existingEnd && existingStart < endTime) {
184+
return false; // Overlapping interval found
185+
}
186+
}
187+
188+
this.booked.add(tmp);
189+
return true;
190+
}
191+
}
192+
140193
// V1-1
141194
// IDEA : BRUTE FORCE
142195
// https://leetcode.com/problems/my-calendar-i/editorial/

leetcode_java/src/main/java/dev/workspace6.java

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,4 +1393,103 @@ public int numComponents(ListNode head, int[] nums) {
13931393
// return cnt;
13941394
// }
13951395

1396+
// LC 729
1397+
// https://leetcode.com/problems/my-calendar-i/
1398+
// 2.04 PM - 2.24 PM
1399+
/**
1400+
* The event can be represented as a pair of integers startTime and endTime that represents
1401+
* a booking on the half-open interval [startTime, endTime),
1402+
* the range of real numbers x such that startTime <= x < endTime.
1403+
*
1404+
*
1405+
* IDEA 1:
1406+
*
1407+
* use a linear data structure that can save SORTED
1408+
* intervals ([startTime, endTime)),
1409+
* so it enable to check if the new interval overlap with
1410+
* the existing intervals or not
1411+
*
1412+
*
1413+
* IDEA 2: use an array, sort everytime when a new interval is added
1414+
*
1415+
*
1416+
*
1417+
*/
1418+
class MyCalendar {
1419+
1420+
List<List<Integer>> booked;
1421+
1422+
public MyCalendar() {
1423+
this.booked = new ArrayList<>();
1424+
}
1425+
1426+
public boolean book(int startTime, int endTime) {
1427+
1428+
List<Integer> tmp = new ArrayList<>();
1429+
tmp.add(startTime);
1430+
tmp.add(endTime);
1431+
1432+
if(this.booked.isEmpty()){
1433+
this.booked.add(tmp);
1434+
// ??? TODO : check
1435+
// sort(this.booked);
1436+
return true;
1437+
}
1438+
1439+
for(List<Integer> x: booked){
1440+
int existingStart = x.get(0);
1441+
int existingEnd = x.get(1);
1442+
/**
1443+
* |----|
1444+
* |------| (old)
1445+
*
1446+
* or
1447+
*
1448+
* |-----|
1449+
* |----| (old)
1450+
*
1451+
* or
1452+
*
1453+
* |---|
1454+
* |----------| (old)
1455+
*
1456+
*
1457+
*
1458+
*/
1459+
// if ( endTime > existingStart || startTime < existingEnd ){
1460+
// return false;
1461+
// }
1462+
if (startTime < existingEnd && existingStart < endTime) {
1463+
return false; // Overlapping interval found
1464+
}
1465+
}
1466+
1467+
this.booked.add(tmp);
1468+
//sort(this.booked);
1469+
1470+
return true;
1471+
}
1472+
1473+
private void sort(List<List<Integer>> bookedDays){
1474+
// descending sorting on 1) 1st element, if same, sort on 2nd element
1475+
bookedDays.sort((x,y) -> {
1476+
if(x.get(0) < y.get(0)){
1477+
return 1;
1478+
}else if(x.get(0) > y.get(0)){
1479+
return -1;
1480+
}else if (x.get(0) == y.get(0)){
1481+
if(x.get(1) < y.get(1)){
1482+
return 1;
1483+
}else if (x.get(1) > y.get(1)){
1484+
return -1;
1485+
}
1486+
return 0; // ???
1487+
}
1488+
return 0;
1489+
});
1490+
}
1491+
1492+
}
1493+
1494+
13961495
}

0 commit comments

Comments
 (0)