跳到主要内容

合并两个有序列表?

参考答案:

合并两个有序列表是一个常见的编程问题。这里有一个使用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]

这个解决方案使用了两个指针(ij),分别指向两个列表的开头。然后,它比较两个指针所指向的元素,并将较小的元素添加到合并后的列表中,然后移动相应的指针。当其中一个列表结束时,它将另一个列表的剩余部分添加到合并后的列表中。