编程实现两个有序表的就地归并,归并以后不允许表中有重复元素
时间: 2023-05-28 09:02:03 浏览: 40
以下是Python实现:
```python
def merge(arr1, arr2):
i, j = 0, 0
while i < len(arr1) and j < len(arr2):
if arr1[i] < arr2[j]:
i += 1
elif arr1[i] > arr2[j]:
arr1.insert(i, arr2[j])
i += 1
j += 1
else:
arr2.pop(j)
if j < len(arr2):
arr1.extend(arr2[j:])
return arr1
```
示例:
```python
arr1 = [1, 3, 5, 7, 9]
arr2 = [2, 3, 4, 6, 8]
print(merge(arr1, arr2))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr1 = [1, 3, 5, 7, 9]
arr2 = [2, 4, 6, 8, 10]
print(merge(arr1, arr2))
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr1 = [1, 3, 5, 7, 9]
arr2 = [2, 2, 4, 6, 8]
print(merge(arr1, arr2))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr1 = [1, 3, 5, 7, 9]
arr2 = [2, 2, 4, 6, 8, 9, 9]
print(merge(arr1, arr2))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
说明:
该函数输入两个有序列表,使用双指针法将两个列表进行归并,结果存在第一个列表中。如果第一个列表中已经有存在于第二个列表中的元素,那么就跳过该元素;否则,将该元素插入到第一个列表中。返回归并后的第一个列表。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)