class Solution {
public:
vector<int> inventoryManagement(vector<int>& stock, int cnt) {
return topk(stock,0,stock.size()-1,cnt);
}
private:
int partition(vector<int> &v,int left,int right)
{
int pivot = v[left];
while(left < right)
{
while(left < right && v[right] >= pivot) right--;
v[left] = v[right];
while(left < right && v[left] <= pivot) left++;
v[right] = v[left];
}
v[left] = pivot;
return left;
}
vector<int> topk(vector<int> &v, int left,int right,int cnt)
{
if(left < right)
{
int par = partition(v,left,right);
if (par == cnt-1) return vector<int>(v.begin(),v.begin()+cnt);
else if(par < cnt-1) topk(v,par+1,right,cnt);
else topk(v,left,par-1,cnt);
}
return vector<int>(v.begin(),v.begin()+cnt);
}
};
leetcode每日一题第六十天
最新推荐文章于 2024-05-20 15:46:19 发布