标签:正序 big top 中位数 num 数组 small nums1 size
1 class Solution 2 { 3 public: 4 double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) 5 { 6 int m = nums1.size(),n = nums2.size(); 7 int i = 0,j = 0; 8 for(;i < m && j < n;) 9 { 10 if(nums1[i] < nums2[j]) addNum(nums1[i ++]); 11 else addNum(nums2[j ++]); 12 } 13 while(i < m) addNum(nums1[i ++]); 14 while(j < n) addNum(nums2[j ++]); 15 16 if(big.size() + small.size() & 1) return small.top(); 17 else return (big.top() + small.top()) / 2.0; 18 } 19 20 priority_queue<int,vector<int>,greater<int>> small;//小根堆 21 priority_queue<int> big;//大根堆 22 public: 23 24 void addNum(int num) //维护小根堆与大根堆相等或者比大根堆多1 25 { 26 if(big.empty() || num > big.top()) small.push(num); 27 else // big->[1],small->[2],num = 0 ——> big->[0,1],small->[2]——> big->[0],small->[1,2] 28 { 29 big.push(num); 30 small.push(big.top()); 31 big.pop(); 32 } 33 34 if(small.size() > big.size() + 1) 35 { 36 big.push(small.top()); 37 small.pop(); 38 } 39 } 40 };
标签:正序,big,top,中位数,num,数组,small,nums1,size 来源: https://www.cnblogs.com/yuhong1103/p/13061094.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。