Python程序:合并两个已排序列表以形成更大的已排序列表
假设我们有两个已排序的列表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 的大小 时,执行以下操作:
- 如果 lst0[i] > lst1[j],则
- 将 lst1[j] 插入到 x 的末尾
- j := j + 1
- 否则,当 lst0[i] < lst1[j] 时,则
- 将 lst0[i] 插入到 x 的末尾
- i := i + 1
- 否则,
- 将 lst0[i] 插入到 x 的末尾
- 将 lst1[j] 插入到 x 的末尾
- i := i + 1, j := j + 1
- 如果 lst0[i] > lst1[j],则
- 当 i < len(lst0) 时,执行以下操作:
- 将 lst0[i] 插入到 x 的末尾
- i := i + 1
- 当 j < len(lst1) 时,执行以下操作:
- 将 lst1[j] 插入到 x 的末尾
- 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]
广告