库存管理III ---- 分治-快排

题目链接

题目:

分析:

  • 这道题本质上是一个topK问题, 我们能够想到三种解决办法
    解法一: 排序
    解法二: 堆
    解法三: 快速选择排序, 时间复杂度最好, 而且题目要求返回的顺序不限, 所以这个方法最好
  • 数组中的第K个最大元素 ---- 分治-快排-CSDN博客, 我们在这道题中学习了快速选择排序, 这道题要求的是返回第K大的元素, 而这道题要的是前K个小的元素, 我们想到, 找第K大的元素, K左边的元素一定是<=K, K右边的元素一定是>=K,但是是无序的, 与这道题的要求恰好相同
  • 那么我们想要前K小的元素, 只需要创建一个数组, 来存储K前面的元素即可, 所以这道题和上一道题其实是相同的, 这道题只是找第K小的元素
  • 那么在后面的判断条件中, 我们还是设每一块区域元素个数为a,b,c
  • 情况一: 如果第k个最小元素落在<key的区间, 说明此时a一定是>=k的, 此时只需要去[l, left]区间去找第k个最小元素即可

  • 情况二: 如果第k个最小元素落在=key的区间, 那么b+c一定是>=k的, 此时只需要返回key即可, 因为这个区间都是key

  • 情况三: 如果不是上述两种情况, 那么第k个最小元素一定落在>key的区间, , 此时需要去[right, r]区间去找, 但是我们要找的是第k-b-c小的元素, 因为我们舍去了=key和<key的区间

代码:

class Solution {public int[] inventoryManagement(int[] stock, int cnt) {qsort(stock, 0, stock.length - 1, cnt);int[] ret = new int[cnt];for (int i = 0; i < cnt; i++) {ret[i] = stock[i];}return ret;}public void qsort(int[] nums, int l, int r, int k) {if (l >= r)return;int left = l - 1;int right = r + 1;int i = l;int key = nums[new Random().nextInt(r - l + 1) + l];while (i < right) {if (nums[i] < key)swap(nums, i++, ++left);else if (nums[i] == key)i++;elseswap(nums, i, --right);}int a = left - l + 1;int b = right - left - 1;if (a > k)qsort(nums, l, left, k);else if (a + b >= k)return;elseqsort(nums, right, r, k - a - b);}public void swap(int[] nums, int i, int j) {int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

速卖通618新店销量暴增秘诀:自养号测评的关键要素

618速卖通新店开业已20天&#xff0c;却迟迟未能迎来首单&#xff0c;这无疑让商家倍感焦虑。面对这一困境&#xff0c;商家需冷静分析原因&#xff0c;并采取有效措施提升店铺曝光度和吸引力&#xff0c;下面具体说说做。 一、速卖通新店20天了没出单怎么办&#xff1f; 商家…

python单元测试

需要提前配置一下环境&#xff1a;单元测试Unittests TestCase测试用例 import unittestdef my_sum(a, b):return a bclass Test(unittest.TestCase):def test_001(self):print(my_sum(3, 6))def test_002(self):print(my_sum(1, 3))注意类中测试方法都必须以test开头 Test…

四川汇聚荣聚荣科技有限公司综合实力如何?

在探讨一个公司的综合实力时&#xff0c;我们不仅关注其经济表现&#xff0c;还应深入分析其技术实力、市场地位、创新能力、团队素质以及社会责任感等多个维度。四川汇聚荣聚荣科技有限公司作为一家立足于科技领域的企业&#xff0c;其实力究竟如何呢?接下来的内容将围绕这一…

【C语言】详解static和extern关键字

文章目录 1. 前言2. 作用域和生命周期2.1 作用域2.1.1 全局变量和局部变量 2.2 生命周期 3. static关键字3.1 static修饰的局部变量 4. extern关键字5. extern和static关键字的相互作用5.1 static修饰函数 6.总结 1. 前言 可能在你遇到这篇文章之前&#xff0c;你可能并未听过…

基于jeecgboot-vue3的Flowable流程-已办任务(二)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 接上一节&#xff0c;这个部分主要讲功能代码 1、注册列表数据显示 //注册table数据const { prefixCls, tableContext, onExportXls, onImportXls } useListPage({tableProps: {title: …

1898java疫情防控管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 疫情防控管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发…

顶顶通呼叫中心中间件-如何配置识别不同语种的ASR

文章目录 前言联系我们创建不同语种的语音识别任务开始对接识别不同语种的ASR重启 asrproxy 程序使用识别不同语种的ASR 前言 之前讲过顶顶通的 asrproxy 程序如何对接第三方的ASR&#xff0c;比如&#xff1a;阿里云的ASR。不知道如何对接的&#xff0c;可以参考&#xff1a;…

idea2023如何创建普通maven工程项目

解决 1.创建新项目 1.进入创建项目 File -> new -> project 2&#xff0c;project 中有 build system 选择maven 2.在已有项目中创建普通maven工程 1.右键项目选择 new -> Module 2.选择 new Module 其实与新建maven工程没什么区别 em:问题 idea以前的版本是在Mav…

“能监测、会预警、快处置”,51WORLD智慧应急数字孪生解决方案

我国自然灾害多发&#xff0c;安全生产基础薄弱。加之城市运行日益复杂&#xff0c;安全隐患、安全问题不断涌现&#xff0c;探索构建全新的应急管理体系和能力迫在眉睫。 面对新形势&#xff0c;依托数字孪生、云计算、大数据、人工智能等新一代信息技术打造统分结合、协调联…

别让你的品牌默默无闻,掌握建设与营销的关键技巧……

管理学大师彼得德鲁克曾经说过&#xff0c;“企业两个最重要的功能是创新和营销&#xff0c;其他一切都是成本。” 在商业领域中&#xff0c;有很多类型的营销。 它们中的每一个都不同&#xff0c;且都是有特定场景的。 有些用于区别于竞争对手&#xff0c;有些用于适应用户…

本地运行feishu-chatgpt项目结合内网穿透实现无公网IP远程访问

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 本文主要介绍如何在飞书中创建chatGPT机器人并且结合内网穿透工具…

怎么发送超大文件?困扰已久的邮件大附件发送问题解决了

邮件是日常中使用最多的文件流转工具&#xff0c;特别是对于企业内部的员工间、及企业与企业间的业务开展&#xff0c;数据和文件的发送、业务留痕大多都基于邮箱展开。 邮箱的普遍使用给用户基于邮箱进行业务沟通提供了前提&#xff0c;其中&#xff0c;Outlook邮箱是使用最广…

JVM学习-JVM运行时参数

JVM参数选项 标准参数选项 特点 稳定&#xff0c;后续版本不会变化以【-】开头 各种选项 运行java或者java -help可以看到所有的标准选项 补充内容 -server&#xff1a;64位机器上只支持Server模式的JVM&#xff0c;适用于需要大内存的应用程序&#xff0c;默认用并行垃圾回…

18 - 各赛事的用户注册率(高频 SQL 50 题基础版)

18 - 各赛事的用户注册率 -- 注册率注册用户数/所有用户数 selectr.contest_id,round(100*count(*)/(select count(*) from Users),2) percentage from Register r group by r.contest_id order bypercentage desc,r.contest_id ASC;

Phpstorm使用xdebug断点调试

一、目标 1、在浏览器地址栏里操作页面访问接口时&#xff0c;可以在项目代码对应入口处断点拦截调试&#xff1b; 2、在postman调用接口时&#xff0c;可以在项目代码对应入口处断点拦截调试&#xff1b; phpstorm版本&#xff1a;PhpStorm 2024.1.2 二、具体操作 1、安装…

Python离线查询IP地址对应的国家和城市

使用场景&#xff1a; 在没网的情况下使用python代码实现对ip地址进行查询国家和地市 代码实现&#xff1a; 需要安装 pip install geoip2 库 import geoip2.databasedef get_location_by_ip(ip_address, db_path):reader geoip2.database.Reader(db_path)try:response r…

什么是输入偏置电流?

输入偏置电流&#xff08;input bias current&#xff09;&#xff1a;运放同相与反相端流入和流出的电流。理想的运放同相和反相端的阻抗是无穷大的&#xff0c;所以是无法流进和流出电流。 第一种定义&#xff1a;同相与反相端电流和的平均值 以AD8031运放举例&#xff0c;…

HCIP与CCNP,中级认证里哪个更香?

如果你是网络领域的从业者&#xff0c;一定听说过HCIP&#xff08;华为认证网络工程师&#xff09;和CCNP&#xff08;思科认证网络专业人员&#xff09;这两个中级认证。 那么&#xff0c;在这两者之间&#xff0c;你更倾向于选择哪一个呢&#xff1f; 今天就对这两个认证进…

wine和crossover哪个好 使用crossover有什么优势

如果你是Mac或Linux用户&#xff0c;你可能会遇到这样的情况&#xff1a;你想要运行一些Windows上的应用程序或游戏&#xff0c;但是你的操作系统并不支持它们。这时候&#xff0c;你有几种选择&#xff1a;一是安装双系统&#xff0c;也就是在你的电脑上同时安装Windows或Linu…

教师常用小程序分享

和大家分享几款超级实用的教学小程序&#xff0c;不仅能够提高我们的办公效率&#xff0c;还能让我们的教学生活变得更加轻松有趣。 腾讯文档&#xff1a;云端协作的利器 教学协作是必不可少的。腾讯文档小程序&#xff0c;就是云端协作的利器。支持多人在线编辑文档&#xff…