劍指office--------最小的K個數 (待補充)
阿新 • • 發佈:2020-07-26
題目描述
輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。 思路1:用排序演算法 快排,堆排序等 思路2:借用STL中的multiset,因為其有自動排序功能+存在重複元素(set是自動排序+去重) ps:因為打acm原因,更傾向於借用stl1 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)