合併七个静止数组
分类:编程应用

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

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

说明:

注意:

  • 初始化nums1nums2 的元素数量分别为mn
  • 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。

你可以假设 nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。在 nums1 和 nums2 中初始化的元素的数量分别是 m 和 n。

示例:

"""
分析:
题目中要求将nums2插入nums1中,最后存在nums1中
最后新的nums1的大小为m+n-1
倒序nums1和nums2,判断最后一位,越大的数放在新nums1的最后
"""

输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6],       n = 3输出:[1,2,2,3,5,6]

void merge(int* nums1, int m, int* nums2, int n) {    int *tmp = (int *)malloc(sizeof(int)*(m+n));    int n1i = 0,n2i =0, ti =0;    int i;    while(n1i < m && n2i < n)    {        if (nums1[n1i] < nums2[n2i])        {            tmp[ti] = nums1[n1i];            n1i++;        }        else        {            tmp[ti] = nums2[n2i];            n2i++;        }        ti++;    }    if (n1i == m)    {        for (i=n2i;i<n;i++)        {            tmp[ti++] = nums2[i];        }     }    else if(n2i == n)    {        for (i=n1i;i<m;i++)        {            tmp[ti++] = nums1[i];        }    }    for (i=0;i<m+n;i++)    {        nums1[i] = tmp[i];    }    free;}
class Solution:
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        index = m + n - 1
        m = m - 1
        n = n - 1

        while n >= 0:
            if m >= 0 and nums1[m] > nums2[n]:
                nums1[index] = nums1[m]
                m -= 1
            else:
                nums1[index] = nums2[n]
                n -= 1
            index -= 1

本文由正版必中一肖图发布于编程应用,转载请注明出处:合併七个静止数组

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文