leetcode 88. Merge Sorted Array

来源:互联网 发布:我知谁掌管明天基督教 编辑:程序博客网 时间:2024/06/17 22:39

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.

题意很简单,就是一个简单的归并排序。

代码如下:

import java.util.Arrays;public class Solution {    public void merge(int[] nums1, int m, int[] nums2, int n)     {        if(n<=0)            return ;        if(m<=0)        {            for(int i=0;i<n;i++)                nums1[i]=nums2[i];            return;        }        int i=0,j=0;        int k=0;        int []res=new int[n+m];        while(i<m && j<n)        {            if(nums1[i]<=nums2[j])                res[k++]=nums1[i++];            else                res[k++]=nums2[j++];        }        while(i<m)            res[k++]=nums1[i++];        while(j<n)            res[k++]=nums2[j++];        for(i=0;i<m+n;i++)            nums1[i]=res[i];    }}

下面是C++的做法,很简单,就是一次归并排序

代码如下:

#include <iostream>#include <vector>using namespace std;class Solution {public:    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)     {        vector<int> res(nums1.size(),0);        int i = 0, j = 0, k = 0;        while (i < m && j < n)        {            if (nums1[i] < nums2[j])                res[k++] = nums1[i++];            else                res[k++] = nums2[j++];        }        while (i < m)            res[k++] = nums1[i++];        while (j < n)            res[k++] = nums2[j++];        nums1 = res;    }};
原创粉丝点击