1. 程式人生 > 實用技巧 >劍指office--------最小的K個數 (待補充)

劍指office--------最小的K個數 (待補充)

題目描述

輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。 思路1:用排序演算法 快排,堆排序等 思路2:借用STL中的multiset,因為其有自動排序功能+存在重複元素(set是自動排序+去重) ps:因為打acm原因,更傾向於借用stl
 1 class Solution {
 2 public:
 3     vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
 4         vector<int
>ans; 5 if (k==0||k>input.size()) return ans; 6 multiset<int>q; 7 int len=input.size(); 8 for (int i=0;i<len;i++){ 9 q.insert(input[i]); 10 11 } 12 13 multiset<int>::iterator it=q.begin(); 14 for
(int i=0;i<k;i++){ 15 ans.push_back(*it); 16 it++; 17 } 18 return ans; 19 } 20 };

時間複雜度:O(input.size()+k)+往multiset插入元素 O(input.size() * log(input.size()))

空間複雜度:O(input.size()+k)