思路:
- 将向量转为队列
- 迭代器的next交替取两个队列的队头,弹出
代码:
class ZigzagIterator {
private:
queue<int> d1, d2;
int cur = 0;
public:
//迭代器初始化
ZigzagIterator(vector<int>& v1, vector<int>& v2) {
for (auto i : v1) d1.push(i);
for (auto j : v2) d2.push(j);
cur = v1.empty() ? 1 : 0;
}
//迭代器next实现
int next() {
int val = 0;
//cur为0 取d1队头并弹出
if (cur == 0) {
val = d1.front(); d1.pop();
if (!d2.empty()) cur = 1;
}
//cur为1 取d2队头并弹出
else {
val = d2.front(); d2.pop();
if (!d1.empty()) cur = 0;
}
return val;
}
//迭代器结尾判断
bool hasNext() {
return !d1.empty() || !d2.empty();
}
};