当前位置: 首页 > article >正文

159.库存管理(TOPk问题!)

思路:也是tok的问题,与上篇博客思路一样,只不过是求前k个小的元素!

基于快排分块思路的代码如下:

class Solution {
public:
    int getkey(vector<int>&nums,int left,int right)
    {
        int r=rand();
        return nums[r%(right-left+1)+left];
    }
    void qsort(vector<int>&nums,int left,int right,int k)
    {
        if(left>=right ) return ;
        vector<int>ret(k);
        int l=-1,r=right+1;
        int i=0;
        int key=getkey(nums,left,right);
        while(i<r)
        {
            if(nums[i]<key)
            {
                swap(nums[++l],nums[i++]);
            }
            else if(nums[i]>key)
            {
                swap(nums[--r],nums[i]);
            }
            else
            {
                i++;
            }
        }

        int a=l-left+1;
        int b=r-l-1;
        int c=right-r+1;

        if(a>=k)
        {
            return qsort(nums,left,l,k);
        }
        else if(a+b>=k)
        {
            return ;
        }
        else
        {
            return qsort(nums,r,right,k-a-b);
        }
        return ;
    }

    vector<int> inventoryManagement(vector<int>& stock, int cnt) 
    {
        int n=stock.size();
        qsort(stock,0,n-1,cnt);
        return {stock.begin(),stock.begin()+cnt};
    }
};

 优先级队列代码:

class Solution {
public:
    vector<int> inventoryManagement(vector<int>& stock, int cnt)
    {
        vector<int>ret(cnt);
        priority_queue<int,vector<int>,greater<int>>q;
        for(auto ch:stock)
        {
            q.push(ch);
        }
        for(int i=0;i<cnt;i++)
        {
            ret[i]=q.top();
            q.pop();
        }       
        return ret;
    }
};


http://www.kler.cn/a/154732.html

相关文章:

  • Python进程间通讯大揭秘:原理深度剖析与实战案例分享
  • Ubuntu20.04 解决一段时间后键盘卡死的问题 ubuntu
  • SpringBoot整合Mybatis-Plus实践汇总
  • 《数学年刊A辑》
  • 深度学习的多主机多GPU协同训练
  • 24.11.13 机器学习 特征降维(主成份分析) KNN算法 交叉验证(K-Fold) 超参数搜索
  • 戴尔科技推出全新96核Precision 7875塔式工作站
  • 数据结构(超详细讲解!!)第二十五节 树与森林
  • Nginx实现多虚拟主机配置
  • MySQL海量数据配置优化教程
  • 通过两个css属性提升长列表渲染效率
  • Hdoop学习笔记(HDP)-Part.10 创建集群
  • Linux驱动开发学习笔记1《字符设备驱动开发》
  • VT-VRPA2-1-1X/V0/T5控制4WRE6比例方向阀放大板
  • Wordpress自动定时发布怎么开通-Wordpress怎么自动发布原创文章
  • 4-Docker命令之docker pause
  • react-native实践日记--6.ReactNative 项目版本升级,0.61到0.72升级的问题记录(二)
  • 锂电涂布机设备健康管理:降低运维成本的关键
  • pygame实现贪吃蛇小游戏
  • mybatis项目中添加logback日志
  • Android 13.0 默认授予app获取序列号SerialNo权限
  • SQL Server 2016(分离和附加数据库)
  • 【计算机网络笔记】802.11无线局域网
  • 深度学习【二】
  • [二分查找]LeetCode2009 :使数组连续的最少操作数
  • 数据管理系统-week10-自由访问控制