Skip to content

Commit db96195

Browse files
authored
Merge pull request #204 from bky373/main
[bky373] Week 13 Solutions
2 parents 34f24b1 + 3494f26 commit db96195

File tree

5 files changed

+122
-0
lines changed

5 files changed

+122
-0
lines changed

insert-interval/bky373.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// time: O(N)
2+
// space: O(1)
3+
class Solution {
4+
5+
public int[][] insert(int[][] intervals, int[] newInterval) {
6+
int n = intervals.length;
7+
int i = 0;
8+
List<int[]> result = new ArrayList<>();
9+
10+
while (i < n && intervals[i][1] < newInterval[0]) {
11+
result.add(intervals[i]);
12+
i++;
13+
}
14+
15+
while (i < n && newInterval[1] >= intervals[i][0]) {
16+
newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
17+
newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
18+
i++;
19+
}
20+
result.add(newInterval);
21+
22+
while (i < n) {
23+
result.add(intervals[i]);
24+
i++;
25+
}
26+
27+
return result.toArray(new int[result.size()][]);
28+
}
29+
}

meeting-rooms-ii/bky373.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// time: O(n * log n)
2+
// space: O(n)
3+
class Solution {
4+
5+
public int minMeetingRooms(int[][] intervals) {
6+
if (intervals.length == 0) {
7+
return 0;
8+
}
9+
10+
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(
11+
intervals.length,
12+
new Comparator<Integer>() {
13+
public int compare(Integer a, Integer b) {
14+
return a - b;
15+
}
16+
});
17+
18+
Arrays.sort(intervals, new Comparator<int[]>() {
19+
public int compare(final int[] a, final int[] b) {
20+
return a[0] - b[0];
21+
}
22+
});
23+
24+
pq.add(intervals[0][1]);
25+
26+
for (int i = 1; i < intervals.length; i++) {
27+
if (intervals[i][0] >= pq.peek()) {
28+
pq.poll();
29+
}
30+
pq.add(intervals[i][1]);
31+
}
32+
33+
return pq.size();
34+
}
35+
}

merge-intervals/bky373.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// time: O(n * log n)
2+
// space: O(log n)
3+
class Solution {
4+
5+
public int[][] merge(int[][] intervals) {
6+
Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
7+
List<int[]> merged = new ArrayList<>();
8+
9+
for (int[] interval : intervals) {
10+
if (merged.isEmpty() || merged.getLast()[1] < interval[0]) {
11+
merged.add(interval);
12+
} else {
13+
merged.getLast()[1] = Math.max(merged.getLast()[1], interval[1]);
14+
}
15+
}
16+
17+
return merged.toArray(new int[merged.size()][]);
18+
}
19+
}

non-overlapping-intervals/bky373.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// time: O(n * log n)
2+
// space: O(log n)
3+
class Solution {
4+
public int eraseOverlapIntervals(int[][] intervals) {
5+
Arrays.sort(intervals, Comparator.comparingInt(a -> a[1]));
6+
int count = 0;
7+
int min = Integer.MIN_VALUE;
8+
9+
for (int i=0; i<intervals.length; i++) {
10+
int x = intervals[i][0];
11+
int y = intervals[i][1];
12+
13+
if (x >= min) {
14+
min = y;
15+
} else {
16+
count++;
17+
}
18+
}
19+
20+
return count;
21+
}
22+
}

rotate-image/bky373.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// time: O(N), where N is the number of cells in the matrix
2+
// space: O(1)
3+
class Solution {
4+
5+
public void rotate(int[][] matrix) {
6+
int n = matrix.length;
7+
for (int i = 0; i < (n + 1) / 2; i++) {
8+
for (int j = 0; j < n / 2; j++) {
9+
int temp = matrix[n - 1 - j][i];
10+
matrix[n - 1 - j][i] = matrix[n - 1 - i][n - j - 1];
11+
matrix[n - 1 - i][n - j - 1] = matrix[j][n - 1 - i];
12+
matrix[j][n - 1 - i] = matrix[i][j];
13+
matrix[i][j] = temp;
14+
}
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)