※ Leetcode - Array - 88. Merge Sorted Array(快速归并两个有序数组)

1. Problem Description

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 initialized in nums1 and nums2 are m and n respectively.

 

高效归并两个有序数组。

2. My solution1 (另开空间从前往后)

从前往后合并,用两个指针分被指向两个数组当前最小元素,需要另开辟一个数组。

    void merge(vector& nums1, int m, vector& nums2, int n)
    {
        int It1=0,It2=0,It=0;
        vectorres;
        while(It=m)
            {
                while(It2=n)
            {
                while(It1

3. My solution2in place归并,从后往前)

PS

有一组样例是

nums1={0},m=0;

nums2={1],n=1.

    void merge(vector& nums1, int m, vector& nums2, int n)
    {
        int It1=m-1,It2=n-1,It=m+n-1;
        for(int i=0; i=0)
        {
            if(It1>=0&&It2>=0)
            {
 
                if(nums1[It1]>=nums2[It2])
                    nums1[It--]=nums1[It1--];
                else
                    nums1[It--]=nums2[It2--];
            }
            else if(It1<0)
            {
                while(It2>=0)
                    nums1[It--]=nums2[It2--];
                break;
            }
            else
            {
                while(It1>=0)
                    nums1[It--]=nums1[It1--];
                break;
            }
        }
    }


你可能感兴趣的:(leetcode)