【剑斩OFFER】算法的暴力美学——库存管理 III

一、题目描述

二、算法原理

对整个数组进行升序,然后返回前 cnt 项的集合就行。

快排算法:

https://blog.csdn.net/2403_84958571/article/details/155754329?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

三、代码实现

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)) ];
    }
};
相关推荐
ytttr8733 小时前
隐马尔可夫模型(HMM)MATLAB实现范例
开发语言·算法·matlab
点云SLAM4 小时前
凸优化(Convex Optimization)理论(1)
人工智能·算法·slam·数学原理·凸优化·数值优化理论·机器人应用
jz_ddk4 小时前
[学习] 卫星导航的码相位与载波相位计算
学习·算法·gps·gnss·北斗
放荡不羁的野指针4 小时前
leetcode150题-动态规划
算法·动态规划
sin_hielo4 小时前
leetcode 1161(BFS)
数据结构·算法·leetcode
一起努力啊~4 小时前
算法刷题-二分查找
java·数据结构·算法
水月wwww5 小时前
【算法设计】动态规划
算法·动态规划
码农水水6 小时前
小红书Java面试被问:Online DDL的INSTANT、INPLACE、COPY算法差异
算法
iAkuya6 小时前
(leetcode)力扣100 34合并K个升序链表(排序,分治合并,优先队列)
算法·leetcode·链表
我是小狼君6 小时前
【查找篇章之三:斐波那契查找】斐波那契查找:用黄金分割去“切”数组
数据结构·算法