Top K Frequent Elements
2016-06-23 12:41
363 查看
做题涉及到的知识:
1、堆排序中建堆过程时间复杂度O(n):
这是一个bottom-up的建堆。于是,有1/2的元素向下比较了一次,有1/4的向下比较了两次,1/8的,向下比较了3次,......,1/2^k的向下比较了k次,其中1/2^k <= 1, k 约等于lg(n)。于是就有总的比较量:
T = () * n
令 S =
1/2 S =
S - 1/2S = 1/2S =
到这步就很明显了吧,S <= 2
于是T <= 2n => T = O(n).
2、用STL提供的sort算法对map排序:
1、堆排序中建堆过程时间复杂度O(n):
这是一个bottom-up的建堆。于是,有1/2的元素向下比较了一次,有1/4的向下比较了两次,1/8的,向下比较了3次,......,1/2^k的向下比较了k次,其中1/2^k <= 1, k 约等于lg(n)。于是就有总的比较量:
T = () * n
令 S =
1/2 S =
S - 1/2S = 1/2S =
到这步就很明显了吧,S <= 2
于是T <= 2n => T = O(n).
2、用STL提供的sort算法对map排序:
struct CmpByValue { bool operator()(const pair<string,int> & lhs, const pair<string,int> & rhs) {return lhs.second > rhs.second;} };
...
map<string,int> substr;
vector<pair<string,int>> counts(substr.begin(),substr.end()); sort(counts.begin(),counts.end(),CmpByValue());3、通过map统计后用最大优先队列(最大堆)排序
class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { //一,统计处频次 unordered_map<int,int> mapping; for(int number : nums) mapping[number]++; //二,根据频次压入最大堆中 // pair<first, second>: first is frequency, second is number priority_queue<pair<int,int>> pri_que; //最大堆 for(auto it = mapping.begin(); it != mapping.end(); it++) pri_que.push(make_pair(it->second, it->first)); //三,获取结果 while(result.size() < k){ result.push_back(pri_que.top().second); pri_que.pop(); } return result; } private: vector<int> result; };
相关文章推荐
- Android初级之路--------UI控件
- UIView的xib关联问题
- ios开源框架——UITableView+FDTemplateLayoutCell优化UITableViewCell高度计算
- sql insert values 后面的值是单引号,还是没有引号问题由其表中数据格式而定
- UI控件之ScrollView(滚动条)
- sqlmap批量扫描burpsuite请求日志记录
- SQL Server 中master..spt_values的应用
- iOS 蓝牙开发 UUID不能使用 isConnected不能使用的问题解决
- Masonry和FDTemplateLayoutCell搭配使用「UITableview自适应内容高度」
- Arduino SIM900 AT+CGATT=1 出错
- [leetcode] 347. Top K Frequent Elements
- Result Maps collection does not contain value for frontpreviewprofitManage.cdata
- MFC线程相关问题
- android-Building Accessibility Services
- parquet.hadoop 狂打日志,不受控制
- 使用ueditor小结
- 简单三步实现banner的轮播效果
- Druid:简介
- N-皇后 N-Queens
- Errors occurred during the build. Errors running builder 'Integrated Externa......