Java 两个不同长度list交叉合并
时间: 2023-08-22 08:03:42 浏览: 124
可以使用双指针的方法来实现两个不同长度的列表的交叉合并。具体步骤如下:
1. 定义两个指针i和j,分别指向两个列表的起始位置。
2. 创建一个新的空列表,用于存储合并后的结果。
3. 循环遍历两个列表,比较当前位置的元素大小,将较小的元素添加到新列表中,并将指针向后移动一位。
4. 如果其中一个列表已经遍历完了,将另一个列表的剩余元素全部添加到新列表的末尾。
下面是Java代码的实现示例:
```java
public static List<Integer> mergeLists(List<Integer> list1, List<Integer> list2) {
List<Integer> merged = new ArrayList<>();
int i = 0, j = 0;
while (i < list1.size() && j < list2.size()) {
if (list1.get(i) < list2.get(j)) {
merged.add(list1.get(i));
i++;
} else {
merged.add(list2.get(j));
j++;
}
}
while (i < list1.size()) {
merged.add(list1.get(i));
i++;
}
while (j < list2.size()) {
merged.add(list2.get(j));
j++;
}
return merged;
}
```
这个方法的时间复杂度是O(m+n),其中m和n分别是两个列表的长度。
阅读全文