题目
https://www.lintcode.com/problem/540
java
给你两个一维向量,实现一个迭代器,交替返回两个向量的元素
样例
样例1
输入: v1 = [1, 2] 和 v2 = [3, 4, 5, 6]
输出: [1, 3, 2, 4, 5, 6]
解释:
一开始轮换遍历两个数组,当v1数组遍历完后,就只遍历v2数组了,所以返回结果:[1, 3, 2, 4, 5, 6]
样例2
输入: v1 = [1, 1, 1, 1] 和 v2 = [3, 4, 5, 6]
输出: [1, 3, 1, 4, 1, 5, 1, 6]
参考代码
java
public class ZigzagIterator {
List<Integer> ll1,ll2;
//len1,len2: 分别表示ll1,ll2的长度 curll:表示当前访问哪个list
//i:表示即将访问ll1的哪个位置 j:表示即将访问ll2的哪个位置
int len1=0,len2 =0,curll = 1,i=0,j=0;
public ZigzagIterator(List<Integer> v1, List<Integer> v2) {
ll1 =v1;
ll2=v2;
len1 = v1.size();
len2= v2.size();
}
public int next() {
if(curll ==1 && i<len1){
if(j<len2) curll =2;
return ll1.get(i++);
}else{
if(i<len1) curll =1;
return ll2.get(j++);
}
}
public boolean hasNext() {
return i<len1 || j<len2;
}
}
/**
* Your ZigzagIterator object will be instantiated and called as such:
* ZigzagIterator solution = new ZigzagIterator(v1, v2);
* while (solution.hasNext()) result.add(solution.next());
* Output result
*/