|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码 |
|