還是array比較清新~
這題是hard難度倒是令人有點意外(?)
該不會我漏掉了什麼重要的東西XD?!
Median of Two Sorted Arrays
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int *sorted = malloc((sizeof(int))*(nums1Size+nums2Size));
int i,j,k;
int total = nums1Size+nums2Size;
for (i=0,j=0,k=0;k<total;k++)
{
if(i<nums1Size && j<nums2Size)
sorted[k] = (nums1[i]<nums2[j])?(nums1[i++]):(nums2[j++]);
else if (i<nums1Size)
sorted[k]=nums1[i++];
else if (j<nums2Size)
sorted[k]=nums2[j++];
}
if ((total)%2 == 0)
return ((double)(sorted[(total)/2] + sorted[(total)/2-1])/2);
else
return (double)sorted[(total)/2];
}
看看討論區果然搞錯了XDint *sorted = malloc((sizeof(int))*(nums1Size+nums2Size));
int i,j,k;
int total = nums1Size+nums2Size;
for (i=0,j=0,k=0;k<total;k++)
{
if(i<nums1Size && j<nums2Size)
sorted[k] = (nums1[i]<nums2[j])?(nums1[i++]):(nums2[j++]);
else if (i<nums1Size)
sorted[k]=nums1[i++];
else if (j<nums2Size)
sorted[k]=nums2[j++];
}
if ((total)%2 == 0)
return ((double)(sorted[(total)/2] + sorted[(total)/2-1])/2);
else
return (double)sorted[(total)/2];
}
what is O(log(M+N)) XD
O(M+N)不可以嗎XDDDDDDD
完全囧, 這題之後再回來寫吧 XD
沒有留言:
張貼留言