#define MAX_LEN 2000
int nums[2000] = {0};
void mergeArray(int *nums, int *numsSize, int* nums1, int nums1Size, int* nums2, int nums2Size)
{
int i = 0;
int j = 0;
int k = 0;
while (i < nums1Size && j < nums2Size) {
if (nums1[i] <= nums2[j]) {
nums[k++] = nums1[i++];
} else {
nums[k++] = nums2[j++];
}
}
while (i < nums1Size) {
nums[k++] = nums1[i++];
}
while (j < nums2Size) {
nums[k++] = nums2[j++];
}
*numsSize = k;
return;
}
void printf_array(int *nums, int numsSize)
{
for (int i = 0; i < numsSize; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return;
}
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
int numsSize;
mergeArray(nums, &numsSize, nums1, nums1Size, nums2, nums2Size);
// printf_array(nums, numsSize);
if (numsSize == 0) {
return 0;
} else if (numsSize == 1) {
return nums[0];
}
int mid = numsSize / 2;
int flag = numsSize % 2;
if (flag == 1) {
return nums[mid];
} else {
return ((double)(nums[mid] + nums[mid -1]) / 2);
}
}
执行用时:12 ms, 在所有 C 提交中击败了96.47%的用户
内存消耗:6.4 MB, 在所有 C 提交中击败了50.50%的用户