LeetCode | 寻找两个正序数组的中位数 Python C语言

Problem: 4. 寻找两个正序数组的中位数

思路

先合并,后排序,最后找中间轴。

解题方法

由解题思路可知

Code

这是python3的代码。

class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
        nums = sorted(nums1 + nums2)
        if len(nums) % 2:
            return float((nums[len(nums)//2]))
        else:
            return float((nums[len(nums)//2-1]+nums[len(nums)//2])/2)

python2的代码。

class Solution(object):
    def findMedianSortedArrays(self, nums1, nums2):
        nums = sorted(nums1 + nums2)
        if len(nums) % 2:
            return float((nums[len(nums)//2]))
        else:
            return (nums[len(nums)//2-1]+nums[len(nums)//2])/2.0

结果

在这里插入图片描述

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
    int meger[2000], *p = meger, t, count;
    double res = 0;
    for (int i = 0, nums11 = 0, nums22 = 0; i < (nums1Size + nums2Size); p++, i++) {
        if(i < nums1Size) *p = nums1[nums11++];
        else *p = nums2[nums22++];
    }
    for (int i = 0; i < nums1Size + nums2Size-1; i++) {
        for (int j = i + 1; j < nums1Size + nums2Size; j++) {
            if (meger[i] > meger[j]) {
                t = meger[i];
                meger[i] = meger[j];
                meger[j] = t;
            }
        }
    }
    if ((nums1Size + nums2Size) % 2 != 0) {
        res = meger[(nums1Size + nums2Size) / 2];
    } else if ((nums1Size + nums2Size) % 2 == 0) {
        res = (meger[(nums1Size + nums2Size) / 2] +
               meger[(nums1Size + nums2Size) / 2 - 1]) /
              2.0;
    }
    return res;
}

结果

在这里插入图片描述
有时会发现C语言会比Python慢一些。

一些思考

  1. 由于我爱好偷懒的习惯,经常使用static结果导致第一次的结果正确,后面的结果都是错误的。
  2. 其实,中位数可以用总数/2来去找,这让我想起了之前写的一篇文章——openJudge | 中位数 C语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mryan2005

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值