2018年1月28日 星期日

[88] Merge Sorted Array

給兩個sorted array,
要把第二個merge進第一個,
讓第一個變成兩個組起來的sorted array.
可假定第一個array有足夠空間把第二個存進去.

寫完第一版, 看執行時間並不快,
想說難道是要把第二個先全部接到第一個的尾端,
然後再把新array丟去sort, 這樣會比較快嗎?!
明明我就看到兩個for XD 我還只有一個耶 !

後來發現LeetCoce上面寫的時間只能參考,
我copy執行 0ms的下來跑, 結果跑的比我的還慢啊= =
原來一切都是幻覺 QQ
那我就貼我的版本就好了cc
不用refine了反正我沒有天份~(奔入雨中)

Merge Sorted Array
void merge(int* nums1, int m, int* nums2, int n) {
    if (n==0)
        return;
     
    int i=m-1;
    int j=n-1;
    while(i>=0 && j>=0)
    {
        if(nums1[i] < nums2[j])
            nums1[i+j+1] = nums2[j--];
        else
            nums1[i+j+1] = nums1[i--];
    }
    if (i<0)
    {
        for(int q=0;q<=j;q++)
            nums1[q]=nums2[q];
        return;      
    }
    if (j<0)  //可以直接回傳了, 這段其實可以拿掉
    {
        return;
    }
}

沒有留言:

張貼留言