4. Median of Two Sorted Arrays
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4. Median of Two Sorted Arrays相关的知识,希望对你有一定的参考价值。
文章目录如下
(1)自己的思路
(2)自己的代码
(3)别人的思路
(4)别人的代码
(5)对比自己的不足之处
题目如下:
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
(1)自己的思路
a.因为nums1与nums2都是有序的,所以这里只需要按顺序将他们合并成一个有序的nums3即可
b.根据中位数的定义,即取中间位置的数即可,当数组个数为奇数时,只需要取出len/2位置的元素位置。如果数组个数为偶数,只需要取出(len/2)-1与len/2位置的位置元素的和的均值即可
c.该题最主要的是选择合并两个数组的策略,在自己的做法中,所用的时间应该为m+n
(2)自己的代码
class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int i = 0, j = 0; int lens1 = nums1.size(), lens2 = nums2.size(); vector<int> nums3; while (i<lens1 || j<lens2) { //这里要注意for循环中条件判断的顺序 for (;i<lens1&&(j == lens2 || nums1[i]<=nums2[j]); i++) nums3.push_back(nums1[i]); for (;(j<lens2)&&(i == lens1 || nums1[i] > nums2[j]); j++) nums3.push_back(nums2[j]); } //求中位数位置 int midlens3 = nums3.size() / 2; if (nums3.size() == 0) return 0; else if (nums3.size() == 1) return (double)nums3[0]; else if (nums3.size() % 2 == 0) return (double(nums3[midlens3] + nums3[midlens3 - 1]) / 2); else return double(nums3[midlens3]); } };
(3)别人的思路
暂时还没有找到合适的代码,请大家多多见谅……
(不过我觉得这次我自己写的就挺好的,哈哈哈哈哈)
以上是关于4. Median of Two Sorted Arrays的主要内容,如果未能解决你的问题,请参考以下文章
leetcode-4 Median of Two Sorted Arrays
4. Median of Two Sorted Arrays