最小的K个数
来源:互联网 发布:wechat.class.php实例 编辑:程序博客网 时间:2024/05/16 05:13
题目
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
思路
扫描数组,并使用multiset来存储扫描的元素(从大到小存储),如果multiset的长度达到k的话,就用新的元素和multiset的第一个元素比较,如果新元素小,则替换进去,否则丢弃。
参考代码
class Solution{public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { int length = input.size(); vector<int> ans; if (length < k) return ans; multiset<int, greater<int>> set; for (int i = 0; i < length; ++i) { if (i < k) { set.insert(input[i]); } else { auto it = set.begin(); if (*it > input[i]) { set.erase(it); set.insert(input[i]); } } } for (auto it = set.begin(); it != set.end(); ++it) { ans.push_back(*it); } return ans; }};
阅读全文
0 0
- 最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的K个数
- 最小的k个数
- 最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的k个数
- 最小的k个数
- C/C++堆栈
- 使用FormData来提交表单同时上传文件到服务端
- String类和包装类
- 精品微信小程序源码demo推荐-仿饿了么点餐
- MySQL 存储过程 : procedure
- 最小的K个数
- 编译openwrt时报错 Permissions for installing coreutils with pkgsrc on NetBSD
- C#学习2:网上摘录以备学习-------多线程的作用
- 角色子弹的发射(小龙喷火篇)
- Java中子类和父类相关方法的执行顺序
- Android Studio安装的时候路径名错误
- QueryRunner类方法
- 【Spring】DispatcherServlet源码分析
- 关于Android开发自己的一些知识储备