88. 合并两个有序数组

题目描述

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 to hold additional elements from B.The number of elements initialized in A and B are m and n respectively.

代码实现

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {

        if(n == 0)
            return;
        //从后面开始,倒着操作,强攻困难,从后面进攻
        int indexA = m-1;
        int indexB = n-1;
        int index = m+n-1;

        while(indexA >=0 && indexB >= 0)
        {
            if(nums2[indexB] > nums1[indexA])
                nums1[index--] = nums2[indexB--];
            else
                nums1[index--] = nums1[indexA--];
        }

        while(indexB>=0)//如果是nums1还有元素的话,因为nums1的元素就在本地,所以不用自己移动自己
            nums1[index--] = nums2[indexB--];      
    }
};

posted on 2021-07-24 17:17  朴素贝叶斯  阅读(37)  评论(0编辑  收藏  举报

导航