请设计并实现一个能够展开二维向量的迭代器。该迭代器需要支持 next 和 hasNext 两种操作。、
示例:
Vector2D iterator = new Vector2D([[1,2],[3],[4]]);
iterator.next(); // 返回 1
iterator.next(); // 返回 2
iterator.next(); // 返回 3
iterator.hasNext(); // 返回 true
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 4
iterator.hasNext(); // 返回 false
注意:
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/flatten-2d-vector 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Vector2D {
vector<vector<int>> arr;
int r = 0, c = 0, m;
public:
Vector2D(vector<vector<int>>& v) {
arr = v;
m = arr.size();
}
int next() {
while(c == arr[r].size())//跳过没有剩余元素的行
{
r++;
c = 0;
}
return arr[r][c++];
}
bool hasNext() {
while(r < m && c == arr[r].size())
{ //跳过没有剩余元素的行
r++;
c = 0;
}
return r < m-1 || (r == m-1 && c < arr[m-1].size());
}
};
72 ms 21.9 MB