ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/9/17 14:04:40 拓冰建站 浏览量
LeetCode | 寻找两个正序数组的中位数 Python C语言

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

文章目录

  • 思路
  • 解题方法
  • Code
  • 结果
  • 结果
  • 一些思考

思路

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

解题方法

由解题思路可知

Code

这是python3的代码。

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

python2的同上。

结果

在这里插入图片描述

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语言