一、题目描述

二、算法原理

三、代码实现
class Solution {
public:int getrandom(int left,int right,vector<int>& stock){return stock[rand()%(right-left+1)+left];}void qsort(int l,int r,vector<int>& stock,int cnt){if(l>=r){return;}int key=getrandom(l,r,stock);int i=l,left=l-1,right=r+1;while(i<right){if(stock[i]<key) swap(stock[++left],stock[i++]);else if(stock[i]==key) i++;else swap(stock[i],stock[--right]);}int a=left-l+1,b=right-left-1,c=r-right+1;if(a>cnt){qsort(l,left,stock,cnt);}else if(a+b>=cnt){}else{qsort(right,r,stock,cnt-a-b);}}vector<int> inventoryManagement(vector<int>& stock, int cnt) {srand(time(NULL));qsort(0,stock.size()-1,stock,cnt);return {stock.begin(),stock.begin()+cnt};}
};