c++ 面试题(算法类)
Posted zpcoding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 面试题(算法类)相关的知识,希望对你有一定的参考价值。
1,从无序的数据流中找到其中位数:(用大根堆和小根堆来实现)
1 float getMidimum(vector<int>& nums) { 2 priority_queue<int> bigHeap; // 大数优先 3 priority_queue<int, vector<int>, greater<int>> smallHeap; // 小数优先 4 for (int i = 0; i < nums.size(); ++i) { // 对每一个输入的元素 5 if (bigHeap.empty() || nums[i] < bigHeap.top()) 6 bigHeap.push(nums[i]); 7 else 8 smallHeap.push(nums[i]); 9 10 while (bigHeap.size() > smallHeap.size() + 1) { 11 smallHeap.push(bigHeap.top()); 12 bigHeap.pop(); 13 } 14 while (smallHeap.size() > bigHeap.size() + 1) { 15 bigHeap.push(smallHeap.top()); 16 smallHeap.pop(); 17 } 18 } 19 float temp;// 如果两个堆大小相等 20 if (bigHeap.size() == smallHeap.size()) { 21 temp = float(bigHeap.top() + smallHeap.top()) / 2; 22 } 23 else if (bigHeap.size() < smallHeap.size()) // 如果小堆多一个元素 24 temp = smallHeap.top(); 25 else // 如果大堆多一个元素 26 temp = bigHeap.top(); 27 return temp; 28 }
2,25匹马五条赛道怎么最快选出前三个:(类似于:剑指offer p38::二维数组中的查找)
参考:https://blog.csdn.net/cmsbupt/article/details/17404183
以上是关于c++ 面试题(算法类)的主要内容,如果未能解决你的问题,请参考以下文章
《程序员面试金典(第6版)》面试题 08.04. 幂集(回溯算法,位运算,C++)不断更新