合并两个有序列表?
参考答案:
合并两个有序列表是一个常见的编程问题。这里有一个使用Python的解决方案,该方案假设列表已经预先排序:
def merge_sorted_lists(list1, list2):
# 初始化合并后的列表和指针
merged_list = []
i = j = 0
# 遍历两个列表,直到其中一个列表结束
while i < len(list1) and j < len(list2):
# 将较小的元素添加到合并后的列表,并移动相应的指针
if list1[i] < list2[j]:
merged_list.append(list1[i])
i += 1
else:
merged_list.append(list2[j])
j += 1
# 如果第一个列表还有剩余元素,将它们添加到合并后的列表
while i < len(list1):
merged_list.append(list1[i])
i += 1
# 如果第二个列表还有剩余元素,将它们添加到合并后的列表
while j < len(list2):
merged_list.append(list2[j])
j += 1
return merged_list
# 示例
list1 = [1, 3, 5, 7]
list2 = [2, 4, 6, 8]
print(merge_sorted_lists(list1, list2)) # 输出: [1, 2, 3, 4, 5, 6, 7, 8]
这个解决方案使用了两个指针(i
和j
),分别指向两个列表的开头。然后,它比较两个指针所指向的元素,并将较小的元素添加到合并后的列表中,然后移动相应的指针。当其中一个列表结束时,它将另一个列表的剩余部分添加到合并后的列表中。