Skip to content

Commit 8787982

Browse files
author
ChienkuChen
committed
Add 251
1 parent 4bdbd77 commit 8787982

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

src/_251/Vector2D.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package _251;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.Iterator;
6+
import java.util.List;
7+
8+
// Need to handle empty List<Integer>
9+
// For example:
10+
// [[], [], [1, 2, 3], [4, 5], [], [6], []]
11+
public class Vector2D implements Iterator<Integer> {
12+
private List<List<Integer>> vector;
13+
private int rowPointer;
14+
private int elementPointer;
15+
16+
public Vector2D(List<List<Integer>> vec2d) {
17+
vector = vec2d;
18+
rowPointer = 0;
19+
elementPointer = -1;
20+
}
21+
22+
@Override
23+
public Integer next() {
24+
return vector.get(rowPointer).get(elementPointer);
25+
}
26+
27+
@Override
28+
public boolean hasNext() {
29+
if (vector.isEmpty())
30+
return false;
31+
32+
if (!vector.get(rowPointer).isEmpty() && (elementPointer + 1) < vector.get(rowPointer).size()) {
33+
elementPointer++;
34+
return true;
35+
}
36+
37+
if (rowPointer + 1 >= vector.size())
38+
return false;
39+
40+
int tmp = rowPointer + 1;
41+
while (tmp < vector.size() && vector.get(tmp).isEmpty())
42+
tmp++;
43+
44+
if (tmp >= vector.size())
45+
return false;
46+
47+
rowPointer = tmp;
48+
elementPointer = 0;
49+
return true;
50+
}
51+
52+
public static void main(String[] args) {
53+
List<List<Integer>> vector = new ArrayList<>();
54+
vector.add(Arrays.asList(1, 2));
55+
vector.add(Arrays.asList(3));
56+
vector.add(Arrays.asList(4, 5, 6));
57+
vector.add(new ArrayList<>());
58+
vector.add(new ArrayList<>());
59+
Vector2D vector2D = new Vector2D(vector);
60+
61+
while (vector2D.hasNext())
62+
System.out.println(vector2D.next());
63+
}
64+
}

0 commit comments

Comments
 (0)