Leetcode#88. Merge Sorted Array

来源:互联网 发布:阿里云搭建wordpress 编辑:程序博客网 时间:2024/06/05 11:03

题目

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.

题意

给你两个已经排序好的数组,一个为nums1,一个为nums2,取nums1的前m位和nums2的前n位,合并在nums1中,且最后得到的nums1是排序好的,函数没有返回值,仅仅修改nums1数组中的元素达到效果。

解题思路

从第m+n为开始倒着填充nums1数组。

Python语言

class Solution(object):    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.        """        len1 = m-1        len2 = n-1        index = m+n-1        while len1>=0 and len2>=0:            if nums1[len1] > nums2[len2]:                nums1[index] = nums1[len1]                len1 = len1 - 1                index = index -1            else:                nums1[index] = nums2[len2]                index = index - 1                len2 = len2 - 1        while len2>=0:                nums1[index] = nums2[len2]                index = index - 1                len2 = len2 - 1

C++语言

class Solution {public:    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)     {        int sum = n+m-1, len1 = m-1, len2 = n-1;        while(len1>=0 && len2>=0)        {            if(nums1[len1] > nums2[len2])            {                nums1[sum] = nums1[len1];                sum--;                len1--;            }            else            {                nums1[sum] = nums2[len2];                sum--;                len2--;            }        }        while(len2>=0)        {            nums1[sum] = nums2[len2];            sum--;            len2--;        }    }};