Skip to content

Commit

Permalink
update 323 java, progress
Browse files Browse the repository at this point in the history
  • Loading branch information
yennanliu committed Jun 10, 2024
1 parent 1b2c42b commit 14c2c7b
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 22 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1128,7 +1128,7 @@
| # | Title | Solution | Time | Space | Difficulty | Status | Note|
|-----|---------------- | --------------- | --------------- | --------------- | ------------- |--------------|-----|
269 |[Alien Dictionary](https://leetcode.com/problems/alien-dictionary/) | [Python](./leetcode_python/Graph/alien-dictionary.py), [Java](./leetcode_java/src/main/java/LeetCodeJava/Graph/AlienDictionary.java) | | | Hard| Curated Top 75, dfs, bfs, topology sort, `fb`, google, m$, airbnb, uber, amazon | AGAIN******** (4) (not start)
323| [Number of Connected Components in an Undirected Graph](https://leetcode.com/problems/number-of-connected-components-in-an-undirected-graph/) | [Python ](./leetcode_python/Graph/number-of-connected-components-in-an-undirected-graph.py), [Java ](./leetcode_java/src/main/java/LeetCodeJava/Graph/NumberOfConnectedComponentsUndirectedGraph.java) | _O(n)_ | _O(n)_| Medium | Curated Top 75, 🔒 , dfs, Union Find, `graph`, `linkedin`, `amazon`, fb, google, m$, linkedin| AGAIN************** (5) (MUST)
323| [Number of Connected Components in an Undirected Graph](https://leetcode.com/problems/number-of-connected-components-in-an-undirected-graph/) | [Python ](./leetcode_python/Graph/number-of-connected-components-in-an-undirected-graph.py), [Java ](./leetcode_java/src/main/java/LeetCodeJava/Graph/NumberOfConnectedComponentsUndirectedGraph.java) | _O(n)_ | _O(n)_| Medium | Curated Top 75, LC 547, 🔒 , dfs, Union Find, `graph`, `linkedin`, `amazon`, fb, google, m$, linkedin| AGAIN************** (5) (MUST)
959 | [Regions Cut By Slashes](https://leetcode.com/problems/regions-cut-by-slashes/) | [Python](./leetcode_python/Graph/regions-cut-by-slashes.py) | _O(n^2)_| _O(n^2)_| Medium | Union Find |
1135 | [Connecting Cities With Minimum Cost](https://leetcode.com/problems/connecting-cities-with-minimum-cost/) | [Python](./leetcode_python/Graph/connecting-cities-with-minimum-cost.py) | _O(n^2)_| _O(n^2)_| Medium | union find, Kruskal, prime, graph, amazon | AGAIN (not start)

Expand Down
2 changes: 1 addition & 1 deletion data/progress.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
20240610: 22(ok*),207(ok*),210(todo),323(again)
20240610: 22(ok*),207(ok*),210(todo),323(again),547(todo)
20240609: 236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)
20240608: 503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77
20240607: 235(ok),236(again),496(ok),110(ok),1448(again!)
Expand Down
18 changes: 9 additions & 9 deletions data/to_review.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
2024-08-04 -> ['22(ok*),207(ok*),210(todo),323(again)']
2024-08-04 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)']
2024-08-03 -> ['236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)']
2024-08-02 -> ['503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77']
2024-08-01 -> ['235(ok),236(again),496(ok),110(ok),1448(again!)']
Expand All @@ -18,7 +18,7 @@
2024-07-17 -> ['56']
2024-07-16 -> ['62,572,57']
2024-07-15 -> ['322,191,190']
2024-07-14 -> ['22(ok*),207(ok*),210(todo),323(again)', '73,200,70,323(again)']
2024-07-14 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '73,200,70,323(again)']
2024-07-13 -> ['236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '207,79,206,213,198']
2024-07-12 -> ['503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '212(todo),211,338,208(again)']
2024-07-11 -> ['235(ok),236(again),496(ok),110(ok),1448(again!)', '347,253(todo),91(todo),217']
Expand All @@ -30,27 +30,27 @@
2024-07-05 -> ['128,261', '121,252']
2024-07-04 -> ['005,003(again)', '125']
2024-07-02 -> ['11,647,261(again),133(again)']
2024-07-01 -> ['22(ok*),207(ok*),210(todo),323(again)', '143,15,268,141,139']
2024-07-01 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '143,15,268,141,139']
2024-06-30 -> ['236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '21,20,19,271,269']
2024-06-29 -> ['503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '417(again),33,153,152']
2024-06-28 -> ['235(ok),236(again),496(ok),110(ok),1448(again!)', '424,297(todo),295(todo),39']
2024-06-27 -> ['206,143,138(again),141,needcode_tree,226,104,110(again!!!)', '55,54(todo),53(again),435(again),49,48(todo),300(again)']
2024-06-26 -> ['150,22(again),739(again!!!),needcode_linkedlist', '56']
2024-06-25 -> ['567(todo),needcode_array_hash,needcode_sliding_window,567(again),needcode_stack,155(again)', '62,572,57']
2024-06-24 -> ['146,460,582(ok*),139(ok),322(todo)', '322,191,190']
2024-06-23 -> ['22(ok*),207(ok*),210(todo),323(again)', '127,742(again),133(again),207(ok*),261(ok)', '73,200,70,323(again)']
2024-06-23 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '127,742(again),133(again),207(ok*),261(ok)', '73,200,70,323(again)']
2024-06-22 -> ['236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '128,261', '207,79,206,213,198']
2024-06-21 -> ['503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '005,003(again)', '212(todo),211,338,208(again)']
2024-06-20 -> ['235(ok),236(again),496(ok),110(ok),1448(again!)', '347,253(todo),91(todo),217']
2024-06-19 -> ['206,143,138(again),141,needcode_tree,226,104,110(again!!!)', '11,647,261(again),133(again)', '226,98,253(todo)']
2024-06-18 -> ['22(ok*),207(ok*),210(todo),323(again)', '150,22(again),739(again!!!),needcode_linkedlist', '143,15,268,141,139', '104,230,102,100']
2024-06-18 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '150,22(again),739(again!!!),needcode_linkedlist', '143,15,268,141,139', '104,230,102,100']
2024-06-17 -> ['236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '567(todo),needcode_array_hash,needcode_sliding_window,567(again),needcode_stack,155(again)', '21,20,19,271,269', '105,106']
2024-06-16 -> ['503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '146,460,582(ok*),139(ok),322(todo)', '417(again),33,153,152', '242,235']
2024-06-15 -> ['22(ok*),207(ok*),210(todo),323(again)', '235(ok),236(again),496(ok),110(ok),1448(again!)', '127,742(again),133(again),207(ok*),261(ok)', '424,297(todo),295(todo),39', '371']
2024-06-15 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '235(ok),236(again),496(ok),110(ok),1448(again!)', '127,742(again),133(again),207(ok*),261(ok)', '424,297(todo),295(todo),39', '371']
2024-06-14 -> ['236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '206,143,138(again),141,needcode_tree,226,104,110(again!!!)', '128,261', '55,54(todo),53(again),435(again),49,48(todo),300(again)', '121,252']
2024-06-13 -> ['22(ok*),207(ok*),210(todo),323(again)', '503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '150,22(again),739(again!!!),needcode_linkedlist', '005,003(again)', '56', '125']
2024-06-12 -> ['22(ok*),207(ok*),210(todo),323(again)', '236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '235(ok),236(again),496(ok),110(ok),1448(again!)', '567(todo),needcode_array_hash,needcode_sliding_window,567(again),needcode_stack,155(again)', '62,572,57']
2024-06-11 -> ['22(ok*),207(ok*),210(todo),323(again)', '236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '206,143,138(again),141,needcode_tree,226,104,110(again!!!)', '146,460,582(ok*),139(ok),322(todo)', '11,647,261(again),133(again)', '322,191,190']
2024-06-13 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '150,22(again),739(again!!!),needcode_linkedlist', '005,003(again)', '56', '125']
2024-06-12 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '235(ok),236(again),496(ok),110(ok),1448(again!)', '567(todo),needcode_array_hash,needcode_sliding_window,567(again),needcode_stack,155(again)', '62,572,57']
2024-06-11 -> ['22(ok*),207(ok*),210(todo),323(again),547(todo)', '236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '206,143,138(again),141,needcode_tree,226,104,110(again!!!)', '146,460,582(ok*),139(ok),322(todo)', '11,647,261(again),133(again)', '322,191,190']
2024-06-10 -> ['236(again*),1448(again),needcode_trie,208(ok*),needcode_graph,695,22(todo),981(todo),261(todo)', '503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '235(ok),236(again),496(ok),110(ok),1448(again!)', '150,22(again),739(again!!!),needcode_linkedlist', '127,742(again),133(again),207(ok*),261(ok)', '143,15,268,141,139', '73,200,70,323(again)']
2024-06-09 -> ['503(todo),739(ok),105(todo),needcode_heap_pq,1046,215,needcode_backtrack,78,39(todo),46,90(todo),77', '235(ok),236(again),496(ok),110(ok),1448(again!)', '206,143,138(again),141,needcode_tree,226,104,110(again!!!)', '567(todo),needcode_array_hash,needcode_sliding_window,567(again),needcode_stack,155(again)', '128,261', '21,20,19,271,269', '207,79,206,213,198']
2024-06-08 -> ['235(ok),236(again),496(ok),110(ok),1448(again!)', '206,143,138(again),141,needcode_tree,226,104,110(again!!!)', '150,22(again),739(again!!!),needcode_linkedlist', '146,460,582(ok*),139(ok),322(todo)', '005,003(again)', '417(again),33,153,152', '212(todo),211,338,208(again)']
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,70 @@
public class NumberOfConnectedComponentsUndirectedGraph {

// V0
// IDEA : GRAPH
// IDEA : UNION FIND
// TODO : implement it
// https://www.youtube.com/watch?v=8f1XPm4WOUc
// public int countComponents(int n, int[][] edges) {
// return 0;
// }

// V0
// V1
// IDEA : UNION FIND
// https://github.com/neetcode-gh/leetcode/blob/main/java/0323-number-of-connected-components-in-an-undirected-graph.java
// https://www.youtube.com/watch?v=8f1XPm4WOUc
private int[] parent;
private int[] rank;

public int countComponents_1(int n, int[][] edges) {
parent = new int[n];
rank = new int[n];

for (int i = 0; i < n; i++) {
parent[i] = i;
rank[i] = 1;
}

int result = n;
for (int i = 0; i < edges.length; i++) {
if (union_1(edges[i][0], edges[i][1]) == 1) {
result--;
}
}

return result;
}

private int find_1(int node) {
int result = node;

while (parent[result] != result) {
parent[result] = parent[parent[result]];
result = parent[result];
}

return result;
}

private int union_1(int n1, int n2) {
int p1 = this.find_1(n1);
int p2 = this.find_1(n2);

if (p1 == p2) {
return 0;
}

if (rank[p2] > rank[p1]) {
parent[p1] = p2;
rank[p2] += rank[p1];
} else {
parent[p2] = p1;
rank[p1] += rank[p2];
}

return 1;
}

// V1
// IDEA : UNION FIND (gpt)
// TODO : validate
static class UnionFind {
Expand Down Expand Up @@ -67,7 +124,7 @@ public int getCount() {
}
}

public int countComponents_0_1(int n, int[][] edges) {
public int countComponents_1_1(int n, int[][] edges) {
UnionFind uf = new UnionFind(n);

for (int[] edge : edges) {
Expand All @@ -78,12 +135,12 @@ public int countComponents_0_1(int n, int[][] edges) {
}


// V1
// V2
// IDEA : UNION FIND
// https://leetcode.ca/2016-10-18-323-Number-of-Connected-Components-in-an-Undirected-Graph/
private int[] p;

public int countComponents_1(int n, int[][] edges) {
public int countComponents_2(int n, int[][] edges) {
p = new int[n];
for (int i = 0; i < n; ++i) {
p[i] = i;
Expand All @@ -108,10 +165,10 @@ private int find(int x) {
return p[x];
}

// V2
// V3
// IDEA : DFS
// https://www.cnblogs.com/cnoodle/p/14197652.html
public int countComponents_2(int n, int[][] edges) {
public int countComponents_3(int n, int[][] edges) {
int count = 0;
List<List<Integer>> g = new ArrayList<>();
boolean[] visited = new boolean[n];
Expand Down Expand Up @@ -141,10 +198,10 @@ private void dfs(boolean[] visited, int node, List<List<Integer>> g) {
}
}

// V3
// V4
// IDEA : UNION FIND
// https://www.cnblogs.com/cnoodle/p/14197652.html
public int countComponents_3(int n, int[][] edges) {
public int countComponents_4(int n, int[][] edges) {
int count = n;
int[] parents = new int[n];
for (int i = 0; i < n; i++) {
Expand All @@ -169,10 +226,10 @@ private int find(int[] parents, int i) {
return i;
}

// V4
// V5
// IDEA : BFS
// https://www.cnblogs.com/cnoodle/p/14197652.html
public int countComponents_4(int n, int[][] edges) {
public int countComponents_5(int n, int[][] edges) {
int count = 0;
List<List<Integer>> g = new ArrayList<>();
boolean[] visited = new boolean[n];
Expand Down

0 comments on commit 14c2c7b

Please sign in to comment.