java merge 2带所有元素的排序列表
我有一个家庭作业,几个小时来我一直在努力解决这个问题
描述:我们有2个排序数组列表,列表a的长度是n,列表b的长度是m;我们假设a和b已经排序,并且列表a和b不包含重复项。我的想法如下,但我总是得到一个错误:索引越界
public static List<Integer> union(List<Integer> list1, List<Integer> list2 ) {
List<Integer> union = new ArrayList<>();
int n1 = 0;
int n2 = 0;
for (int i = 0; i < list1+list2; i++) {
....
}
# 1 楼答案
如果循环到
m + n
其中一个数组的大小可能小于另一个数组,那么该数组将耗尽,因此数组索引将超出范围。相反,您可以使用while
循环,该循环将只循环到两个列表的最小大小,然后再循环,因为列表已排序,您可以将两个列表中较大的所有剩余元素添加到union
# 2 楼答案