合并两个有序数组(C, Python)
1. 题目描述
难度:简单
2. 题目分析
这道题比较简单,实现方法有两种:
- 插入法(C)
依次将nums2中的数与nums1中的数按照大小放入nums1的末尾,这样的做法不用再次申请空间。时间复杂度为O(n)。 - 排序法(Python)
先将nums2的元素放入nums1的尾部,然后进行排序即可。时间复杂度为O(nlogn)。
3. C语言实现
代码如下:
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int i = m - 1, j = n - 1, k = m+n-1;
while(i >= 0 && j >= 0){
if(nums1[i] > nums2[j]){
nums1[k] = nums1[i];
--k;
--i;
}else{
nums1[k] = nums2[j];
--k;
--j;
}
}
while(j >= 0){
nums1[k] = nums2[j];
--k;
--j;
}
}
运行结果为:
4. Python语言实现
代码如下:
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
nums1[m:m+n] = nums2
nums1.sort()
Python大法好,运行结果为: