LeetCode--88.合并两个有序数组(插入法,排序法)

合并两个有序数组(C, Python)

      • 1. 题目描述
      • 2. 题目分析
      • 3. C语言实现
      • 4. Python语言实现

1. 题目描述

难度:简单
LeetCode--88.合并两个有序数组(插入法,排序法)_第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;
        }
}

运行结果为:
LeetCode--88.合并两个有序数组(插入法,排序法)_第2张图片

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大法好,运行结果为:
LeetCode--88.合并两个有序数组(插入法,排序法)_第3张图片

你可能感兴趣的:(#,•Array)