給兩個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;
}
}
沒有留言:
張貼留言