601. 2차원 벡터를 평평하게 펴다
2차원 벡터의 기능을 실현하기 위해 교체기를 설계하다
예제
2차원 벡터 [1,2],[3],[4,5,6]를 중복 호출하여hasNext가false로 돌아올 때까지 다음 원소의 순서는:[1,2,3,4,5,6]이어야 한다.
코드
public class Vector2D implements Iterator {
Stack> stack = new Stack<>();
Stack stackj;
void pushListListToStack(List> vec2d) {
Stack> temp = new Stack<>();
for (List nested : vec2d) {
temp.push(nested);
}
while (!temp.isEmpty()) {
stack.push(temp.pop());
}
}
void pushListToStack(List vec) {
Stack temp = new Stack<>();
for (Integer nested : vec) {
temp.push(nested);
}
while (!temp.isEmpty()) {
stackj.push(temp.pop());
}
}
public Vector2D(List> vec2d) {
pushListListToStack(vec2d);
// Initialize your data structure here
stackj = new Stack<>();
}
public Integer next() {
// Write your code here
if(!hasNext()) {
return null;
}
return stackj.pop();
}
public boolean hasNext() { //
// Write your code here
while (stackj.isEmpty() && !stack.isEmpty())
pushListToStack(stack.pop());
return !stackj.isEmpty();
}
public void remove() {}
}
public class Vector2D implements Iterator {
private Iterator> i;
private Iterator j;
public Vector2D(List> vec2d) {
// Initialize your data structure here
i = vec2d.iterator();
j = null;
}
@Override
public Integer next() {
// Write your code here
hasNext();
return j.next();
}
@Override
public boolean hasNext() {
// Write your code here
while ((j == null || !j.hasNext()) && i.hasNext())
j = i.next().iterator();
return j != null && j.hasNext();
}
@Override
public void remove() {}
}
/**
* Your Vector2D object will be instantiated and called as such:
* Vector2D i = new Vector2D(vec2d);
* while (i.hasNext()) v[f()] = i.next();
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.