两个有序的List a,b 里面存放的是Integer类型的数字,请完成下列方法
public List merge(List a, List b){
}
要求产出一个有序的List(请注意,需要merge的List已经是有序的)
两个有序的List a,b 里面存放的是Integer类型的数字,请完成下列方法
public List merge(List a, List b){
}
要求产出一个有序的List(请注意,需要merge的List已经是有序的)
首先说一下思路:
1.因为你这个是有序的,我假定他是升序排列
2.首先建立一个新的List c,然后本别比较a和b中的值,将较小的值追加到c的末尾
3.如果a,b当前值相等,则将a,b当前的值都追加到c的末尾
4.如果a和b有一个查找到了最后,则将另一个没有到结尾的list后面的所有项都追缴到c的后面
这样可以保证速度最快,请参考:
[code="java"] public List merage(List a, List b) {
List c = new ArrayList();
int aIndex = 0;
int bIndex = 0;
while (a.size() > aIndex && b.size() > bIndex) {
if (a.get(aIndex) < b.get(bIndex)) {
c.add(a.get(aIndex));
aIndex++;
} else if (a.get(aIndex) > b.get(bIndex)) {
c.add(b.get(bIndex));
bIndex++;
} else {//如果相等
c.add(a.get(aIndex));
c.add(b.get(bIndex));
aIndex++;
bIndex++;
}
}
if (a.size() < aIndex) {
for (int i = bIndex; i < b.size(); i++) {
c.add(b.get(i));
}
} else {
for (int i = aIndex; i < a.size(); i++) {
c.add(a.get(i));
}
}
System.out.println(c);
return c;
}[/code]