【发布时间】:2016-04-28 08:46:59
【问题描述】:
这是一项任务,我正试图解决。你必须写函数
void merge(ArrayList a, ArrayList b) {
// code
}
函数接收两个大小相等的 ArrayList 作为输入参数 [a1, a2, ..., an], [b1, b2, ..., bn]。 执行结果是第一个ArrayList必须包含两个列表的元素,并且它们交替一致([a1, b1, a2, b2, ..., an, bn]) 请阅读粗体字两次=)
代码必须尽可能高效地工作。
这是我的解决方案
public static void merge(ArrayList a, ArrayList b) {
ArrayList result = new ArrayList();
int i = 0;
Iterator iter1 = a.iterator();
Iterator iter2 = b.iterator();
while ((iter1.hasNext() || iter2.hasNext()) && i < (a.size() + b.size())) {
if (i % 2 ==0) {
result.add(iter1.next());
} else {
result.add(iter2.next());
}
i++;
}
a = result;
}
我知道它一点也不完美。但我不明白如何在不创建 tmp 列表的情况下合并到第一个列表中。
提前感谢您的参与。
【问题讨论】:
-
您还没有向我们提问。 “这是我的任务;为我做”不算数。