Skip to content

Commit dbbe77f

Browse files
authored
Merge pull request #1606 from sora0319/main
[sora0349] Week 12 Solutions
2 parents 5e8b06e + b4737e0 commit dbbe77f

File tree

5 files changed

+134
-0
lines changed

5 files changed

+134
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
public class Solution {
2+
public int eraseOverlapIntervals(int[][] intervals) {
3+
Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
4+
int count = 0;
5+
6+
int prv_end = intervals[0][1];
7+
for (int i = 1; i < intervals.length; i++) {
8+
int start = intervals[i][0];
9+
int end = intervals[i][1];
10+
if (prv_end > start) {
11+
count++;
12+
prv_end = Math.min(end, prv_end);
13+
} else {
14+
prv_end = end;
15+
}
16+
}
17+
return count;
18+
}
19+
}
20+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
public class Solution {
2+
public int countComponents(int n, int[][] edges) {
3+
List<List<Integer>> graph = new ArrayList<>();
4+
for (int i = 0; i < n; i++) {
5+
graph.add(new ArrayList<>());
6+
}
7+
for (int[] edge : edges) {
8+
int node = edge[0];
9+
int adj = edge[1];
10+
graph.get(node).add(adj);
11+
graph.get(adj).add(node);
12+
}
13+
14+
int count = 0;
15+
Set<Integer> visited = new HashSet<>();
16+
for (int node = 0; node < n; node++) {
17+
if (visited.contains(node)) {
18+
continue;
19+
}
20+
count++;
21+
Deque<Integer> queue = new ArrayDeque<>();
22+
queue.push(node);
23+
while (!queue.isEmpty()) {
24+
int cur = queue.pop();
25+
if (visited.contains(cur)) continue;
26+
visited.add(cur);
27+
for (int g : graph.get(cur)) {
28+
if (!visited.contains(g)) {
29+
queue.push(g);
30+
}
31+
}
32+
}
33+
}
34+
return count;
35+
}
36+
}
37+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
public class Solution {
2+
public ListNode removeNthFromEnd(ListNode head, int n) {
3+
Queue<ListNode> queue = new LinkedList<>();
4+
ListNode temp = new ListNode(0, head);
5+
ListNode node = temp;
6+
7+
for (int i = 0; i < n + 1; i++) {
8+
queue.offer(node);
9+
node = node.next;
10+
}
11+
12+
while (node != null) {
13+
queue.poll();
14+
queue.offer(node);
15+
node = node.next;
16+
}
17+
18+
ListNode prev = queue.poll();
19+
prev.next = prev.next.next;
20+
21+
return temp.next;
22+
}
23+
}
24+

same-tree/sora0319.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
public class Solution {
2+
public boolean isSameTree(TreeNode p, TreeNode q) {
3+
Stack<TreeNode[]> stack = new Stack<>();
4+
stack.push(new TreeNode[]{p, q});
5+
6+
while (!stack.isEmpty()) {
7+
TreeNode[] nodes = stack.pop();
8+
TreeNode n1 = nodes[0];
9+
TreeNode n2 = nodes[1];
10+
11+
if (n1 == null && n2 == null) {
12+
continue;
13+
}
14+
if (n1 == null || n2 == null) {
15+
return false;
16+
}
17+
if (n1.val != n2.val) {
18+
return false;
19+
}
20+
stack.push(new TreeNode[]{n1.left, n2.left});
21+
stack.push(new TreeNode[]{n1.right, n2.right});
22+
}
23+
return true;
24+
}
25+
}
26+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
public class Codec {
2+
public String serialize(TreeNode root) {
3+
if (root == null) {
4+
return "N";
5+
}
6+
String left = serialize(root.left);
7+
String right = serialize(root.right);
8+
return root.val + "," + left + "," + right;
9+
}
10+
11+
public TreeNode deserialize(String data) {
12+
Deque<String> values = new ArrayDeque<>(Arrays.asList(data.split(",")));
13+
return dfs(values);
14+
}
15+
16+
private TreeNode dfs(Deque<String> values) {
17+
String value = values.pollFirst();
18+
if (value.equals("N")) {
19+
return null;
20+
}
21+
TreeNode node = new TreeNode(Integer.parseInt(value));
22+
node.left = dfs(values);
23+
node.right = dfs(values);
24+
return node;
25+
}
26+
}
27+

0 commit comments

Comments
 (0)