LeetCode—Merge Sorted Array两个有序数组排序

Given two sorted integer arrays A and B, merge B into A as one sorted array.

Note:

You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.

这里比较好的一个条件就是数组A是已经给定了存储空间的数组,这样的一个merge函数在归并算法中经常会用到

第一种应该是最愚蠢的做法,重新开辟了一个m+n的内存空间

class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        int *C = new int[m+n];
        int i = 0;
        int j = 0;
        int k = 0;
        while(i < m && j < n)
        {
            if(A[i] <= B[j])
            {
                C[k++] = A[i++];
            }
            if(A[i] > B[j])
            {
                C[k++] = B[j++];
            }
        }
        while(i < m)
        {
            C[k++] = A[i++];
        }
        while(j < n)
        {
            C[k++] = B[j++];
        }
        for(i = 0; i < k;i++)
        {
            A[i] = C[i];
        }
        delete []C;
    }
};

但是题目中已经提到A数组是有序的,而且长度很大,应该合理利用这个信息:

class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        int i = m-1;
        int j = n-1;
        int k= m+n-1;
        while(i >= 0 && j >= 0)
        {
            if(A[i] >= B[j])
            {
                A[k--] = A[i--];
            }
            if(A[i] < B[j])
            {
                A[k--] = B[j--];
            }
        }
        while(j >= 0)
        {
            A[k--] = B[j--];
        }
    }
};

时间: 2024-08-04 17:59:30

LeetCode—Merge Sorted Array两个有序数组排序的相关文章

[LeetCode] Merge Sorted Array [22]

题目 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B ar

LeetCode——Merge Sorted Array

Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m

LeetCode: Merge Sorted Array [088]

[题目] Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B

Leetcode:Merge Sorted Array 归并排序

Sorted Array: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in

LeetCode 88. Merge Sorted Array(合并有序数组)

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initi

(每日算法)LeetCode -- Merge Sorted Array (合并有序数组)

Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m

【LeetCode】- Merge Sorted Array (合并有序数组)

[ 问题: ] Given two sorted integer arrays A and B, merge B into A as one sorted array. 直译:给定两个排好序的整形数组,将数组B合并到数组A,形成一个新的数组. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The nu

Merge Sorted Array 混合插入有序数组

Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m 

Leetcode: Merge Sorted Array

题目: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B a