如何获取数组列表中索引的大小?
How to get the size of an index in an arraylist?
我正在编写代码,大部分已经完成,只是这两行有问题,我会完成的。这样做的正确方法是什么?我想我混淆了 Arrays 和 ArrayLists,请帮忙
private final int MAX = 100000;
private ArrayList<Integer> adj = new ArrayList(MAX);
private boolean[] visited = new boolean[MAX];
private void dfsFirst(int u) {
if (visited[u]) {
return;
}
visited[u] = true;
for (int i = 0; i < adj[u].size(); i++) { //issue here with adj
dfsFirst(adj[u].get(i)); //issue here with adj
}
s.push(u);
}
这是我要翻译成的原始代码 Java
https://www.geeksforgeeks.org/2-satisfiability-2-sat-problem/
在Kosaraju算法的reference C++ implementation中,adj
必须是整数列表的数组:
vector<int> adj[MAX];
vector<int> adjInv[MAX];
因此,在Java中应该是:
private final int MAX = 100000;
private List<Integer>[] adj = new List[MAX];
private boolean[] visited = new boolean[MAX];
private Stack<Integer> s = new Stack<>();
private void dfsFirst(int u) {
if (visited[u]) {
return;
}
visited[u] = true;
for (int i = 0; i < adj[u].size(); i++) { // getting size of the list at `u`
dfsFirst(adj[u].get(i));
}
s.push(u);
}
我正在编写代码,大部分已经完成,只是这两行有问题,我会完成的。这样做的正确方法是什么?我想我混淆了 Arrays 和 ArrayLists,请帮忙
private final int MAX = 100000;
private ArrayList<Integer> adj = new ArrayList(MAX);
private boolean[] visited = new boolean[MAX];
private void dfsFirst(int u) {
if (visited[u]) {
return;
}
visited[u] = true;
for (int i = 0; i < adj[u].size(); i++) { //issue here with adj
dfsFirst(adj[u].get(i)); //issue here with adj
}
s.push(u);
}
这是我要翻译成的原始代码 Java https://www.geeksforgeeks.org/2-satisfiability-2-sat-problem/
在Kosaraju算法的reference C++ implementation中,adj
必须是整数列表的数组:
vector<int> adj[MAX];
vector<int> adjInv[MAX];
因此,在Java中应该是:
private final int MAX = 100000;
private List<Integer>[] adj = new List[MAX];
private boolean[] visited = new boolean[MAX];
private Stack<Integer> s = new Stack<>();
private void dfsFirst(int u) {
if (visited[u]) {
return;
}
visited[u] = true;
for (int i = 0; i < adj[u].size(); i++) { // getting size of the list at `u`
dfsFirst(adj[u].get(i));
}
s.push(u);
}