
一、题目描述

二、算法原理
对整个数组进行升序,然后返回前 cnt 项的集合就行。
快排算法:
三、代码实现
cpp
class Solution {
public:
vector<int> inventoryManagement(vector<int>& stock, int cnt) {
Quicksort(0,stock.size() - 1,stock);
vector<int> v;
for(int i = 0; i < cnt;i++) v.push_back(stock[i]);
return v;
}
void Quicksort(int l,int r,vector<int>& nums)
{
if(l >= r) return;
int keyi = Get(l,r,nums);
int i = l;
int left = l - 1;
int right = r + 1;
while(i < right)
{
if(nums[i] > keyi) swap(nums[i],nums[--right]);
else if(nums[i] == keyi) i++;
else swap(nums[++left],nums[i++]);
}
Quicksort(l,left,nums);//zuobian
Quicksort(right,r,nums);//右边
}
int Get(int l,int r,vector<int>& nums)
{
int tmp = rand();
return nums[ l + (tmp % (r - l + 1)) ];
}
};