Skip to content

Commit fe87566

Browse files
authored
Merge pull request #1627 from sora0319/main
[sora0319] Week13 Solutions
2 parents 2d7a9e0 + 1511cd0 commit fe87566

File tree

5 files changed

+110
-0
lines changed

5 files changed

+110
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
public class MedianFinder {
2+
private PriorityQueue<Integer> maxHeap;
3+
private PriorityQueue<Integer> minHeap;
4+
5+
public MedianFinder() {
6+
maxHeap = new PriorityQueue<>(Collections.reverseOrder());
7+
minHeap = new PriorityQueue<>();
8+
}
9+
10+
public void addNum(int num) {
11+
maxHeap.offer(num);
12+
minHeap.offer(maxHeap.poll());
13+
14+
if (minHeap.size() > maxHeap.size()) {
15+
maxHeap.offer(minHeap.poll());
16+
}
17+
}
18+
19+
public double findMedian() {
20+
if (maxHeap.size() > minHeap.size()) {
21+
return maxHeap.peek();
22+
} else {
23+
return (maxHeap.peek() + minHeap.peek()) / 2.0;
24+
}
25+
}
26+
}
27+

insert-interval/sora0319.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
public class Solution {
2+
public int[][] insert(int[][] intervals, int[] newInterval) {
3+
List<int[]> list = new ArrayList<>();
4+
5+
int order = 0;
6+
while (order < intervals.length && intervals[order][0] < newInterval[0]) {
7+
list.add(intervals[order]);
8+
order++;
9+
}
10+
list.add(newInterval);
11+
while (order < intervals.length) {
12+
list.add(intervals[order]);
13+
order++;
14+
}
15+
16+
List<int[]> output = new ArrayList<>();
17+
output.add(list.get(0));
18+
19+
for (int i = 1; i < list.size(); i++) {
20+
int[] last = output.get(output.size() - 1);
21+
int[] current = list.get(i);
22+
if (last[1] < current[0]) {
23+
output.add(current);
24+
} else {
25+
last[1] = Math.max(last[1], current[1]);
26+
}
27+
}
28+
29+
return output.toArray(new int[output.size()][]);
30+
}
31+
}
32+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
public class Solution {
2+
private int count = 0;
3+
private int answer = -1;
4+
5+
public int kthSmallest(TreeNode root, int k) {
6+
ordering(root, k);
7+
return answer;
8+
}
9+
10+
private void ordering(TreeNode node, int k) {
11+
if (node == null) return;
12+
ordering(node.left, k);
13+
count++;
14+
if (count == k) {
15+
answer = node.val;
16+
return;
17+
}
18+
ordering(node.right, k);
19+
}
20+
}
21+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
public class Solution {
2+
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
3+
TreeNode node = root;
4+
while (node != null) {
5+
if (p.val < node.val && q.val < node.val) {
6+
node = node.left;
7+
} else if (node.val < p.val && node.val < q.val) {
8+
node = node.right;
9+
} else {
10+
return node;
11+
}
12+
}
13+
return null;
14+
}
15+
}
16+

meeting-rooms/sora0319.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import java.util.*;
2+
3+
public class Solution {
4+
public boolean canAttendMeetings(int[][] intervals) {
5+
Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
6+
7+
for (int i = 0; i < intervals.length - 1; i++) {
8+
if (intervals[i][1] > intervals[i + 1][0]) {
9+
return false;
10+
}
11+
}
12+
return true;
13+
}
14+
}

0 commit comments

Comments
 (0)