美文网首页
88. 合并两个有序数组

88. 合并两个有序数组

作者: HITZGD | 来源:发表于2018-09-17 21:14 被阅读0次

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

    说明:

    初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
    你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
    
    /********这个版本会报错,没有正确把新建的数组赋值给nums1*****************/
    #include "solution.h"
    #include <iostream>
    
    void Solution::merge(std::vector<int>& nums1, int m, std::vector<int>& nums2, int n)
    {
        int* nums = new int[m + n];
        int sum = m + n;
        int* value = new int[sum];
        if (m == 0) nums1 = nums2;
        if (n == 0) nums1 = nums1;
        int i = 0, j = 0, index = 0;
        while (i < m && j < n)
        {
            if (nums1[i] <= nums2[j])
                nums[index++] = nums2[i++];
            else if(nums1[i] > nums2[j])
                nums[index++] = nums2[j++];
        }
        if (i < m)
            nums[index++] = nums2[i++];
        if(j < n)
            nums[index++] = nums2[j++];
        
    
        nums1.clear();
        for (int i = 0; i < m + n; i++)
        {
            nums1.push_back(nums[i]);
        }
    }
    

    相关文章

      网友评论

          本文标题:88. 合并两个有序数组

          本文链接:https://www.haomeiwen.com/subject/knidnftx.html