合并两个有序数组(leetcode 88)解题思路
时间: 2024-10-15 20:13:40 浏览: 30
合并两个有序数组1
合并两个已排序的整数数组(LeetCode 题目88),通常可以采用双指针法。这种算法的基本思路如下:
1. **初始化两个指针**:分别指向两个输入数组的起始位置,即`i = 0` 和 `j = 0`。
2. **比较元素**:对比当前指向的两个数组元素,将较小的那个添加到结果数组中,并将相应指针向后移动一位,指向下一个未访问的元素。如果当前`nums1[i]`小于`nums2[j]`,则将`nums1[i++]`放入结果;反之,将`nums2[j++]`放入结果。
3. **循环条件**:当其中一个指针超过其数组长度时,说明另一个数组还有剩余元素,将另一个数组剩余部分依次添加到结果数组中。
4. **返回结果数组**:遍历结束后,将`result`数组作为合并后的有序数组返回。
以下是Python版本的示例代码:
```python
def merge(nums1, m, nums2, n):
i, j, k = 0, 0, 0 # 初始化指针
while i < m and j < n:
if nums1[i] < nums2[j]:
nums1[k] = nums1[i]
i += 1
else:
nums1[k] = nums2[j]
j += 1
k += 1
# 将剩余数组添加到结果数组
while i < m:
nums1[k] = nums1[i]
i += 1
k += 1
while j < n:
nums1[k] = nums2[j]
j += 1
k += 1
return nums1[:k]
```
阅读全文