Merge Sorted Array

来源:互联网 发布:perl encode json 编辑:程序博客网 时间:2024/06/03 15:10
从后往前比,因为是往nums1里面插入,所以while循环nums2而不是nums1,当循环结束,nums1就不用动了:
class Solution {public:    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {                int i=m-1;        int j=n-1;        int tail=m+n-1;        while(j>=0)        {            nums1[tail--]=(i>=0&&nums1[i]>nums2[j])?nums1[i--]:nums2[j--];        }    }};
很笨的也过了,用一个额外的空间从前往后......
class Solution {public:    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {        vector<int> nums3;        int i=0;        int j=0;            while(i!=m&&j!=n)        {           if(nums1[i]<=nums2[j])           {               nums3.push_back(nums1[i]);               i++;           }           else           {               nums3.push_back(nums2[j]);               j++;           }        }        if(i==m)        {            while(j!=n)            {                nums3.push_back(nums2[j]);                j++;            }        }         if(j==n)        {            while(i!=m)            {                nums3.push_back(nums1[i]);                i++;            }        }        nums1=nums3;    }};


0 0
原创粉丝点击