Merge Sorted Array

從後往前比,因爲是往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;
    }
};


發佈了56 篇原創文章 · 獲贊 9 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章