輸入n個整數,找出其中最小的K個數
阿新 • • 發佈:2018-12-18
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { int len=input.size(); vector<int> vec; if(len<k||len<=0) return vec; sort(input.begin(),input.end()); for(int i=0;i<k;i++) { vec.push_back(input[i]); } return vec; }
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { int len=input.size(); vector<int> res; if(len<=0||k>len||k<=0) return res; for(int i=0;i<k;i++) res.push_back(input[i]); //建堆 make_heap(res.begin(),res.end()); for(int i=k;i<len;i++) { if(input[i]<res[0]) { //先pop,然後在容器中刪除 pop_heap(res.begin(),res.end()); res.pop_back(); //先在容器中加入,再push res.push_back(input[i]); push_heap(res.begin(),res.end()); } } return res; }