马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 风车呼呼呼 于 2025-2-12 23:29 编辑
题目:
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
测试用例:nums1=[1,2], nums2=[3,4]
为啥OJ上测试出来结果是1.5,自己VS运行是正确的2.5呢?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Tmp {
double a[2000];
int len;
}tmp = {
{0},
0
};
void insert(struct Tmp* tmp, double value) {
tmp->a[tmp->len] = value;
tmp->len++;
}
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int p1 = 0, p2 = 0, middle = (nums1Size + nums2Size) / 2;
while (p1 < nums1Size && p2 < nums2Size) {
if (nums1[p1] < nums2[p2]) {
insert(&tmp, nums1[p1]);
p1++;
}
else {
insert(&tmp, nums2[p2]);
p2++;
}
if (tmp.len == middle+1) {
break;
}
}
while (p1 >= nums1Size && tmp.len < middle+1) {
insert(&tmp, nums2[p2]);
p2++;
}
while (p2 >= nums2Size && tmp.len < middle+1) {
insert(&tmp, nums1[p1]);
p1++;
}
if ((nums1Size + nums2Size) % 2) {
return tmp.a[middle];
}
else {
return (tmp.a[middle-1] + tmp.a[middle]) / 2;
}
}
int main() {
int num1[] = { 1,2 };
int num2[] = { 3,4 };
double result = findMedianSortedArrays(num1, 2, num2, 2);
return 0;
}
|