剑指offer面试题30:最小的K个数
来源:互联网 发布:php 输出等边三角形 编辑:程序博客网 时间:2024/05/21 15:02
题目:输入n个整数,找出其中最小的k个数。
思路:与29题类似。
#include <iostream>#include <vector>using namespace std;int Partition(vector<int> &num, int length, int begin, int end) { if (num.empty() || length <= 0 || begin < 0 || end >= length) return -1; int index = begin; int small = begin - 1; while (index < end) { if (num[index] < num[end]) { ++small; int temp = num[index]; num[index] = num[small]; num[small] = temp; } ++index; } ++small; int temp = num[small]; num[small] = num[end]; num[end] = temp; return small;}void SmallestK(vector<int> &num, int length, int k) { if (num.empty() || length <= 0) return; int begin = 0; int end = length - 1; int index = Partition(num, length, begin, end); while (index != k - 1) { if (index > k - 1) { end = index - 1; index = Partition(num, length, begin, end); } else { begin = index + 1; index = Partition(num, length, begin, end); } } for (int i = 0; i < k; i++) { cout << num[i] << " "; } cout << endl;}int main() { vector<int> num; int k; cin >> k; int a; while (cin >> a) { num.push_back(a); } a = num.size(); SmallestK(num, a, k); for (auto c : num) cout << c << " "; cout << endl; return 0;}
0 0
- 剑指offer面试题30最小的k个数
- [剑指offer][面试题30]最小的k个数
- 【剑指offer】面试题30:最小的K个数
- 剑指Offer:面试题30 最小的k个数
- 剑指offer:面试题30,求最小的K个数
- 剑指offer 面试题30—最小的k个数
- 剑指offer 面试题30 最小的K个数
- 【剑指Offer学习】【面试题30:最小的k个数】
- 剑指offer-面试题30:最小的K个数
- 剑指offer之面试题30:最小的k个数
- 剑指offer之面试题30最小的k个数
- 剑指Offer----面试题30:最小的K个数
- 剑指offer-----面试题30(最小的k个数)
- 剑指offer面试题30:最小的K个数
- 剑指offer--面试题30:最小的K个数
- 剑指Offer之面试题30:最小的K个数
- 剑指offer-面试题30-最小的k个数
- 剑指Offer系列-面试题30:最小的K个数
- RecyclerView的简单应用2,仿gridview
- HDU 5879 Cure(打表预处理)
- KVM虚拟机克隆方法总结(链接克隆)
- poj1651 区间dp
- 解决输入法软键盘上顶RadioGroup实现的底部菜单栏问题
- 剑指offer面试题30:最小的K个数
- URL乱码-待续
- wireshark 过滤语法总结
- HDU 5880 Family View(AC自动机)
- 思维跳跃
- 虚拟机linux中装mysql数据库
- Find The Multiple
- 电路设计_路由器方案比较
- HDU 5882 Balanced Game(水题)