Median of Two Sorted Arrays
来源:互联网 发布:java形参 编辑:程序博客网 时间:2024/06/04 20:13
问题描述: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)).
看到对时间复杂度的要求为对数级别,想到利用二分法,首先比较两个数组的中位数,假定m
class Solution {public: double findMedian(vector<int>& nums,int start, int length){ if(length%2!=0) return (double)nums[start+length/2]; else return ((double)nums[start+length/2]+(double)nums[start+length/2-1])/2;}double findEqual(vector<int>& a, vector<int>& b, int aStart, int bStart, int la, int lb) { int divA = la/2; int divB = lb/2; //int l=divA<divB? dizA: divB; if(la==1&&lb==1) { return ((double)a[aStart]+(double)b[bStart])/2; } if(la==1) { if(lb%2==0) { if(a[aStart]<b[bStart+divB-1]) return b[bStart+divB-1]; else if(a[aStart]>b[bStart+divB]) return b[bStart+divB]; return (double)a[aStart]; } else { if(a[aStart]<b[bStart+divB-1]) return ((double)b[bStart+divB-1]+(double)b[bStart+divB])/2; else if(a[aStart]<b[bStart+divB]) return ((double)a[aStart]+(double)b[bStart+divB])/2; else if(a[aStart]>b[bStart+divB+1]) return ((double)b[bStart+divB]+(double)b[bStart+divB+1])/2; else if(a[aStart]<b[bStart+divB+1]) return ((double)b[bStart+divB]+(double)a[aStart])/2; } } double med_a=findMedian(a,aStart,la); double med_b=findMedian(b,bStart,lb); if(med_a==med_b) { return findMedian(a,aStart,la); } else if(med_a<med_b) return findEqual(a,b,aStart+divA,bStart,la-divA,lb-divA); else return findEqual(a,b,aStart,bStart+divA,la-divA,lb-divA);}double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int s1=nums1.size(); int s2=nums2.size(); if(s1==0||s2==0) return (s1==0)? findMedian(nums2,0,s2):findMedian(nums1,0,s1); if(s1<s2) return findEqual(nums1,nums2,0,0,s1,s2); else return findEqual(nums2,nums1,0,0,s2,s1);}};
0 0
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of two sorted arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- median-of-two-sorted-arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Qt程序启动画面
- JVM——深入分析对象的内存布局
- 常用集合方法汇总
- 消息队列实现从一个进程向另一个进程发送一个数据块的方法
- php检测设备
- Median of Two Sorted Arrays
- 汇编语言学习之“段地址*16+偏移地址=物理地址”的本质
- Max retries exceeded with url Error
- LeetCode 404. Sum of Left Leaves 题解
- Alexnet输入大小调整的经验
- 数据结构——线段树
- 152. Maximum Product Subarray Medium
- poj2182 Lost Cows(经典单点更新)
- C++第2次实验:简单计算问题体验