Skip to content

Commit d9b98ae

Browse files
authored
Improved task 1353.
1 parent 6250305 commit d9b98ae

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2646,7 +2646,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.12'
26462646
| 1357 |[Apply Discount Every n Orders](src.save/main/java/g1301_1400/s1357_apply_discount_every_n_orders/Cashier.java)| Medium | Array, Hash_Table, Design | 174 | 58.82
26472647
| 1356 |[Sort Integers by The Number of 1 Bits](src.save/main/java/g1301_1400/s1356_sort_integers_by_the_number_of_1_bits/Solution.java)| Easy | Array, Sorting, Bit_Manipulation, Counting, Programming_Skills_I_Day_11_Containers_and_Libraries | 10 | 65.50
26482648
| 1354 |[Construct Target Array With Multiple Sums](src.save/main/java/g1301_1400/s1354_construct_target_array_with_multiple_sums/Solution.java)| Hard | Array, Heap_Priority_Queue | 2 | 100.00
2649-
| 1353 |[Maximum Number of Events That Can Be Attended](src.save/main/java/g1301_1400/s1353_maximum_number_of_events_that_can_be_attended/Solution.java)| Medium | Array, Greedy, Heap_Priority_Queue | 70 | 21.66
2649+
| 1353 |[Maximum Number of Events That Can Be Attended](src.save/main/java/g1301_1400/s1353_maximum_number_of_events_that_can_be_attended/Solution.java)| Medium | Array, Greedy, Heap_Priority_Queue | 53 | 99.53
26502650
| 1352 |[Product of the Last K Numbers](src.save/main/java/g1301_1400/s1352_product_of_the_last_k_numbers/ProductOfNumbers.java)| Medium | Array, Math, Design, Queue, Data_Stream | 24 | 60.43
26512651
| 1351 |[Count Negative Numbers in a Sorted Matrix](src.save/main/java/g1301_1400/s1351_count_negative_numbers_in_a_sorted_matrix/Solution.java)| Easy | Array, Binary_Search, Matrix, Binary_Search_I_Day_8 | 1 | 49.66
26522652
| 1349 |[Maximum Students Taking Exam](src.save/main/java/g1301_1400/s1349_maximum_students_taking_exam/Solution.java)| Hard | Array, Dynamic_Programming, Matrix, Bit_Manipulation, Bitmask | 4 | 76.98
Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,33 @@
11
package g1301_1400.s1353_maximum_number_of_events_that_can_be_attended;
22

33
// #Medium #Array #Greedy #Heap_Priority_Queue
4-
// #2022_03_21_Time_70_ms_(21.66%)_Space_99.6_MB_(39.91%)
4+
// #2022_08_19_Time_53_ms_(99.53%)_Space_99.5_MB_(52.91%)
55

66
import java.util.Arrays;
7-
import java.util.PriorityQueue;
7+
import java.util.Comparator;
88

99
public class Solution {
1010
public int maxEvents(int[][] events) {
11-
Arrays.sort(events, (a, b) -> a[0] != b[0] ? a[0] - b[0] : a[1] - b[1]);
12-
PriorityQueue<Integer> heap = new PriorityQueue<>();
13-
int maxEvents = 0;
14-
int i = 0;
15-
for (int day = 1; day <= 100000; day++) {
16-
while (i < events.length && events[i][0] == day) {
17-
heap.offer(events[i++][1]);
18-
}
19-
while (!heap.isEmpty() && heap.peek() < day) {
20-
heap.poll();
21-
}
22-
if (!heap.isEmpty()) {
23-
heap.poll();
24-
maxEvents++;
11+
Arrays.sort(events, Comparator.comparingInt(e -> e[1]));
12+
int[] root = new int[events[events.length - 1][1] + 2];
13+
for (int i = 1; i < root.length; i++) {
14+
root[i] = i;
15+
}
16+
int res = 0;
17+
for (int[] e : events) {
18+
int nxtAvailable = find(root, e[0]);
19+
if (nxtAvailable <= e[1]) {
20+
res++;
21+
root[nxtAvailable] = find(root, nxtAvailable + 1);
2522
}
2623
}
27-
return maxEvents;
24+
return res;
25+
}
26+
27+
private int find(int[] root, int i) {
28+
if (root[i] != i) {
29+
return root[i] = find(root, root[i]);
30+
}
31+
return i;
2832
}
2933
}

0 commit comments

Comments
 (0)