def merge(L1, L2):
'''(list of int, list of int) -> (list of int)
Return a list of ints sorted in increasing order that is
the merge of the given sorted lists of integers.
>>> merge([1, 2, 4], [3, 5])
[1, 2, 3, 4, 5]
'''
new_lst = []
i = 0
while i < len(L1):
for item in L2:
if L1[i] < item:
new_lst.append(L1[i])
new_lst.insert(i + 1, item)
i += 1
return new_lst
这是我的工作,但是当我运行示例时,它会显示
merge([1, 2, 4], [3, 5])
[1, 3, 5, 5, 2, 4]
我想知道我的代码有什么问题?谢谢!
答案 0 :(得分:1)
您不必为另一个列表的每个元素迭代一个完整列表。相反,您的基本操作应该是查看每个列表中的当前元素,并将较小的元素追加到新列表中。继续这样做,直到你用完一个列表中的元素,然后追加其他列表中的所有剩余元素。
您的问题类似于课堂作业,所以我不想发布代码。但是,这是一个大纲。您将需要两个索引计数器,每个列表一个。您的while
循环应该迭代,而两个计数器都短于相应的列表长度(例如while i < len(L1) and j < len(L2):
)。当循环退出时,其中一个计数器仍然比其相应的列表短,所以只需运行第二个循环来附加所有剩余的元素。