Skip to content

Commit 658bc8b

Browse files
committed
fd
1 parent 88486d2 commit 658bc8b

File tree

3 files changed

+42
-69
lines changed

3 files changed

+42
-69
lines changed

solution/src/main/java/com/inuker/solution/MergeIntervals.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
/**
1111
* Created by dingjikerbo on 16/11/21.
12+
* https://leetcode.com/articles/merge-intervals/
1213
*/
1314

1415
public class MergeIntervals {

solution/src/main/java/com/inuker/solution/PeekingIterator.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class PeekingIterator implements Iterator<Integer> {
1010

1111
private Iterator<Integer> mIterator;
1212

13-
private Integer mPeek;
13+
private Integer mNext;
1414

1515
public PeekingIterator(Iterator<Integer> iterator) {
1616
// initialize any member here.
@@ -19,30 +19,27 @@ public PeekingIterator(Iterator<Integer> iterator) {
1919

2020
// Returns the next element in the iteration without advancing the iterator.
2121
public Integer peek() {
22-
if (mPeek == null) {
23-
if (mIterator.hasNext()) {
24-
mPeek = mIterator.next();
25-
}
22+
if (mNext != null) {
23+
return mNext;
2624
}
27-
return mPeek;
25+
mNext = mIterator.next();
26+
return mNext;
2827
}
2928

3029
// hasNext() and next() should behave the same as in the Iterator interface.
3130
// Override them if needed.
3231
@Override
3332
public Integer next() {
34-
if (mPeek == null) {
35-
if (mIterator.hasNext()) {
36-
mPeek = mIterator.next();
37-
}
33+
if (mNext != null) {
34+
Integer ret = mNext;
35+
mNext = null;
36+
return ret;
3837
}
39-
Integer res = mPeek;
40-
mPeek = null;
41-
return res;
38+
return mIterator.next();
4239
}
4340

4441
@Override
4542
public boolean hasNext() {
46-
return mPeek != null || mIterator.hasNext();
43+
return mNext != null || mIterator.hasNext();
4744
}
4845
}

test/src/main/java/com/inuker/test/main.java

Lines changed: 30 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -3,82 +3,57 @@
33
import com.inuker.solution.BinaryTreeInorderTraversal;
44
import com.inuker.solution.ClosestBinarySearchTreeValueII;
55
import com.inuker.solution.InorderSuccessorInBST;
6+
import com.leetcode.library.Interval;
67
import com.leetcode.library.TreeNode;
78

89
import java.util.ArrayList;
10+
import java.util.Collections;
11+
import java.util.Comparator;
12+
import java.util.Iterator;
913
import java.util.LinkedList;
1014
import java.util.List;
1115
import java.util.Stack;
1216

1317
public class main {
1418

1519
public static void main(String[] args) {
16-
TreeNode root = TreeNode.buildTree(new Integer[]{
17-
2, 1
18-
});
19-
20-
List<Integer> list = closestKValues(root, 4.14, 2);
21-
for (Integer n : list) {
22-
System.out.print(n + " ");
23-
}
2420
}
2521

26-
int mMaxCount;
27-
int mCurVal;
28-
int mCurCount;
29-
int mMaxElemSize;
22+
class PeekingIterator implements Iterator<Integer> {
3023

31-
int idx;
24+
private Integer mNext;
3225

33-
public int[] findMode(TreeNode root) {
34-
helper(root);
35-
int[] result = new int[mMaxElemSize];
36-
mCurCount = 0;
37-
unite(root, result);
38-
return result;
39-
}
26+
private Iterator<Integer> mIterator;
4027

41-
private void unite(TreeNode node, int[] result) {
42-
if (node == null) {
43-
return;
28+
public PeekingIterator(Iterator<Integer> iterator) {
29+
// initialize any member here.
30+
mIterator = iterator;
4431
}
45-
unite(node.left, result);
4632

47-
if (node.val == mCurVal) {
48-
mCurCount++;
49-
} else {
50-
mCurCount = 1;
51-
mCurVal = node.val;
33+
// Returns the next element in the iteration without advancing the iterator.
34+
public Integer peek() {
35+
if (mNext != null) {
36+
return mNext;
37+
}
38+
mNext = mIterator.next();
39+
return mNext;
5240
}
5341

54-
if (mCurCount == mMaxCount) {
55-
result[idx++] = mCurVal;
42+
// hasNext() and next() should behave the same as in the Iterator interface.
43+
// Override them if needed.
44+
@Override
45+
public Integer next() {
46+
if (mNext != null) {
47+
Integer ret = mNext;
48+
mNext = null;
49+
return ret;
50+
}
51+
return mIterator.next();
5652
}
5753

58-
unite(node.right, result);
59-
}
60-
61-
private void helper(TreeNode node) {
62-
if (node == null) {
63-
return;
54+
@Override
55+
public boolean hasNext() {
56+
return mNext != null || mIterator.hasNext();
6457
}
65-
66-
helper(node.left);
67-
68-
if (node.val == mCurVal) {
69-
mCurCount++;
70-
} else {
71-
mCurCount = 1;
72-
mCurVal = node.val;
73-
}
74-
75-
if (mCurCount == mMaxCount) {
76-
mMaxElemSize++;
77-
} else if (mCurCount > mMaxCount) {
78-
mMaxElemSize = 1;
79-
mMaxCount = mCurCount;
80-
}
81-
82-
helper(node.right);
8358
}
8459
}

0 commit comments

Comments
 (0)