假设我们有两个排序的列表A和B。我们必须将它们合并并仅形成一个排序的列表C。列表的大小可能会有所不同。
例如,假设A = [1,2,4,7]和B = [1,3,4,5,6,8],则合并列表C将为[1,1,2,3,4, 4,5,6,7,8]
我们将使用递归解决此问题。所以该功能将如下所示工作-
x:=一个新列表
i:= 0,j:= 0
当i <(lst0)的大小而j <(lst1)的大小时
在x的末尾插入lst0 [i]
在x的末尾插入lst1 [j]
i:= i + 1,j:= j + 1
在x的末尾插入lst0 [i]
i:= i + 1
在x的末尾插入lst1 [j]
j:= j + 1
如果lst0 [i]> lst1 [j],则
否则,当lst0 [i] <lst1 [j]时,
除此以外,
当i <len(lst0)时
在x的末尾插入lst0 [i]
i:= i + 1
当j <len(lst1)时
在x的末尾插入lst1 [j]
j:= j + 1
返回x
让我们看一下实现以获得更好的理解
class Solution: def solve(self, lst0, lst1): x=[] i=0 j=0 while(i<len(lst0) and j<len(lst1)): if(lst0[i]>lst1[j]): x.append(lst1[j]) j=j+1 elif(lst0[i]<lst1[j]): x.append(lst0[i]) i=i+1 else: x.append(lst0[i]) x.append(lst1[j]) i=i+1 j=j+1 while(i<len(lst0)): x.append(lst0[i]) i=i+1 while(j<len(lst1)): x.append(lst1[j]) j=j+1 return x ob = Solution()print(ob.solve([1,2,4,7], [1,3,4,5,6,8]))
[1,2,4,7], [1,3,4,5,6,8]
输出结果
[1, 1, 2, 3, 4, 4, 5, 6, 7, 8]