Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 869bc30

Browse files
committed
flatten nestlist + minor refactorings: done
1 parent b449afd commit 869bc30

File tree

4 files changed

+117
-38
lines changed

4 files changed

+117
-38
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.leetcode.recursion;
2+
3+
import java.util.ArrayList;
4+
import java.util.Iterator;
5+
import java.util.List;
6+
7+
/**
8+
* Level: Medium
9+
* Link: https://leetcode.com/problems/flatten-nested-list-iterator/
10+
* Description:
11+
* Given a nested list of integers, implement an iterator to flatten it.
12+
*
13+
* Each element is either an integer, or a list -- whose elements may also be integers or other lists.
14+
*
15+
* Example 1:
16+
* Input: [[1,1],2,[1,1]]
17+
* Output: [1,1,2,1,1]
18+
* Explanation: By calling next repeatedly until hasNext returns false,
19+
* the order of elements returned by next should be: [1,1,2,1,1].
20+
*
21+
* Example 2:
22+
* Input: [1,[4,[6]]]
23+
* Output: [1,4,6]
24+
* Explanation: By calling next repeatedly until hasNext returns false,
25+
* the order of elements returned by next should be: [1,4,6].
26+
*
27+
* Runtime: <a href="https://leetcode.com/submissions/detail/250996020/">2 ms</a>.
28+
*
29+
* @author rampatra
30+
* @since 2019年08月12日
31+
*/
32+
public class FlattenNestListIterator implements Iterator<Integer> {
33+
34+
private int index;
35+
private List<Integer> flattenedList;
36+
37+
public FlattenNestListIterator(List<NestedInteger> nestedList) {
38+
index = 0;
39+
flattenedList = getFlattenedList(nestedList);
40+
}
41+
42+
private List<Integer> getFlattenedList(List<NestedInteger> nestedList) {
43+
List<Integer> flattenedList = new ArrayList<>();
44+
45+
for (NestedInteger nestedInteger : nestedList) {
46+
if (nestedInteger.isInteger()) {
47+
flattenedList.add(nestedInteger.getInteger());
48+
} else {
49+
flattenedList.addAll(getFlattenedList(nestedInteger.getList()));
50+
}
51+
}
52+
53+
return flattenedList;
54+
}
55+
56+
@Override
57+
public Integer next() {
58+
return flattenedList.get(index++);
59+
}
60+
61+
@Override
62+
public boolean hasNext() {
63+
return index < flattenedList.size();
64+
}
65+
66+
public static void main(String[] args) {
67+
// TODO add some test cases
68+
}
69+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.leetcode.recursion;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
/**
7+
* Class needed for various problems like {@link NestedListWeightSumII}, {@link FlattenNestListIterator}, etc.
8+
*
9+
* @author rampatra
10+
* @since 2019年08月12日
11+
*/
12+
public class NestedInteger {
13+
14+
private Integer integer;
15+
private List<NestedInteger> list;
16+
17+
public NestedInteger() {
18+
this.list = new ArrayList<>();
19+
}
20+
21+
public NestedInteger(int integer) {
22+
this.integer = integer;
23+
this.list = new ArrayList<>();
24+
}
25+
26+
public boolean isInteger() {
27+
return this.integer != null;
28+
}
29+
30+
public Integer getInteger() {
31+
return integer;
32+
}
33+
34+
public void setInteger(Integer integer) {
35+
this.integer = integer;
36+
}
37+
38+
public List<NestedInteger> getList() {
39+
return list;
40+
}
41+
42+
public NestedInteger add(NestedInteger nestedInteger) {
43+
this.list.add(nestedInteger);
44+
return this;
45+
}
46+
}

‎src/main/java/com/leetcode/arrays/NestedListWeightSum.java renamed to ‎src/main/java/com/leetcode/recursion/NestedListWeightSum.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.leetcode.arrays;
1+
package com.leetcode.recursion;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

‎src/main/java/com/leetcode/arrays/NestedListWeightSumII.java renamed to ‎src/main/java/com/leetcode/recursion/NestedListWeightSumII.java

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.leetcode.arrays;
1+
package com.leetcode.recursion;
22

33
import java.util.*;
44

@@ -77,40 +77,4 @@ public static void main(String[] args) {
7777

7878
assertEquals(17, nestedSum(Collections.singletonList(ni)));
7979
}
80-
}
81-
82-
class NestedInteger {
83-
84-
private Integer integer;
85-
private List<NestedInteger> list;
86-
87-
public NestedInteger() {
88-
this.list = new ArrayList<>();
89-
}
90-
91-
public NestedInteger(int integer) {
92-
this.integer = integer;
93-
this.list = new ArrayList<>();
94-
}
95-
96-
public boolean isInteger() {
97-
return this.integer != null;
98-
}
99-
100-
public Integer getInteger() {
101-
return integer;
102-
}
103-
104-
public void setInteger(Integer integer) {
105-
this.integer = integer;
106-
}
107-
108-
public List<NestedInteger> getList() {
109-
return list;
110-
}
111-
112-
public NestedInteger add(NestedInteger nestedInteger) {
113-
this.list.add(nestedInteger);
114-
return this;
115-
}
11680
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /