0
在我的應用程序中,我需要數組k的給定大小的所有子集。迭代器遍歷給定大小的所有子集
這可以很容易地使用遞歸方法完成,並沿途存儲所有找到的子集。 但是,我不希望我的應用程序使用指數量的內存[O(n^k)]。
因此,我想編寫一個實現(Java)Iterator
的類來遍歷所述子集。
public class SubsetIterator implements Iterator<int[]> {
private int k;
private int[] array;
public SubsetIterator(int k, int[] array) {
this.k = k;
this.array = array;
}
@Override
public boolean hasNext() {
//To be implemented.
}
@Override
public int[] next() {
//To be implemented.
}
}
因此,我可以按如下方式使用它:
SubsetIterator iter = new SubsetIterator(k, array);
while (iter.hasNext) {
int[] next = iter.next();
//Do stuff
}
顯然,我們需要存儲由next()
上次返回當前的子集被初始化爲1..k。但是,如何從這個當前子集計算下一個子集呢?
以前和我一樣,很多人完成了同樣的事情。請檢查'hasNext()'方法[這裏](https://github.com/Salauyou/Java-Utils/blob/master/src/main/java/ru/salauyou/util/misc/KCombinationIterator.java#L94) –