leetCode---寻找两个有序数组的中位数
2019-04-17 18:31
477 查看
题目:
没考虑时间复杂度时的做法:
class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m = 0, n = 0; float result; int length = nums1.size() + nums2.size(); for (int i=0;i< nums2.size();i++) { nums1.push_back(nums2[i]); } sort(nums1.begin(),nums1.end()); /*while (++n < nums1.size()) //此块主要是用来除去重复元素,该题目并不需要 { if (nums1[m] != nums1 ) nums1[++m] = nums1 ; } nums1.shrink_to_fit(); int num = (int)(m+1) / 2;*/ int num = length / 2; if ((nums1.size() % 2 == 0) && (num != 0)) { result = (nums1[num - 1] + nums1[num])/2.0; } else { result = nums1[num]; } return result; } };
没考虑时间复杂度的结果:
官方答案c++版:
class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m=nums1.size(); int n=nums2.size(); if(m>n) { vector<int>temp(nums1); nums1=nums2; nums2=temp; int tmp=m;m=n;n=tmp; } int iMin=0,iMax=m,halfLen=(m+n+1)/2; while(iMin<=iMax) { int i=(iMin+iMax)/2; int j=halfLen-i; if(i<iMax&&nums2[j-1]>nums1[i]) { iMin=i+1; }else if(i > iMin && nums1[i-1] > nums2[j]) { iMax=i-1; }else{ int maxLeft=0; if(i==0){maxLeft=nums2[j-1];} else if(j==0){maxLeft=nums1[i-1];} else{maxLeft=max(nums1[i-1],nums2[j-1]);} if((m+n)%2==1){return maxLeft;} int minRight=0; if(i==m){minRight=nums2[j];} else if(j==n){minRight=nums1[i];} else{minRight=min(nums2[j],nums1[i]);} return (maxLeft+minRight)/2.0; } } return 0.0; } };
官方结果:
相关文章推荐
- leetcode 寻找两个有序数组的中位数
- Datawhale-LeetCode集训打卡-寻找两个有序数组的中位数
- Leetcode(C++)——4. 寻找两个有序数组的中位数
- LeetCode-4 :寻找两个有序数组的中位数 ★★★★★
- LeetCode4.python实现:寻找两个有序数组中的中位数问题☆☆☆
- LeetCode题解(python)-4. 寻找两个有序数组的中位数
- 【LeetCode】第四题:寻找两个有序数组的中位数
- [LeetCode]4. 寻找两个有序数组的中位数/C++
- 【leetcode】4. 寻找两个有序数组的中位数
- Leetcode-寻找两个有序数组的中位数
- [leetcode] Median of Two Sorted Arrays 寻找两个有序数组的中位数
- LeetCode刷题-寻找两个有序数组的中位数
- leetcode 寻找两个有序数组的中位数 median of two sorted arrays
- LeetCode刷题笔记(Java版)----4. 寻找两个有序数组的中位数
- 寻找两个有序数组的中位数(LeetCode)
- [leetcode 4] 寻找两个有序数组的中位数 python
- leetcode 4. 寻找两个有序数组的中位数(Java版)
- LeetCode--4. 寻找两个有序数组的中位数(Median of Two Sorted Arrays)
- leetcode--寻找两个有序数组的中位数
- LeetCode第4题--寻找两个有序数组的中位数