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慢一些。
一些思考
- 由于我爱好偷懒的习惯,经常使用
static
结果导致第一次的结果正确,后面的结果都是错误的。 - 其实,中位数可以用总数/2来去找,这让我想起了之前写的一篇文章——openJudge | 中位数 C语言