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

做软件测试的网站做高端网站公司

做软件测试的网站,做高端网站公司,专门网站建设,做sorry动图的网站文章目录 前言思路主要思路关于f函数的剖析Code就到这,铁子们下期见!!!! 前言 铁子们好啊!今天阿辉又给大家来更新新一道好题,下面链接是23年9月27的华为笔试原题,LeetCode上面的ha…

请添加图片描述

文章目录

  • 前言
  • 思路
  • 主要思路
  • 关于f函数的剖析
  • Code
    • 就到这,铁子们下期见!!!!

前言

铁子们好啊!今天阿辉又给大家来更新新一道好题,下面链接是23年9月27的华为笔试原题,LeetCode上面的hard难题,阿辉带大伙来拿下它!!!
你可以安排的最多任务数目

思路

二分和单调队列以及一丢丢贪心

主要思路

  • 先按照任务难度和工人能力排序

  • 二分的范围是[l,r)左闭右开,l = 0,r = n+1,最多完成n个任务,n取任务数与工人数的较小值,因为左闭右开,所以rn+1,最少完成0个任务,所以l0

  • 然后就是如何判断lr的中点m是否是能够完成的任务数

    • 排序的重要就在这里体现了,我们取任务难度最小的m个与能力最强的m个工人如果能够完成,那就能完成,如果不能就完成不了

主逻辑代码:

// 主函数,用于找出可以分配的最大任务数量。int maxTaskAssign(vector<int>& tasks, vector<int>& workers, int pills, int strength) {int n = min(tasks.size(), workers.size()); // 取任务数和工人数中较小的一个,因为任务数不能超过工人数。int l = 0; // 二分查找的左边界int r = n+1; // 二分查找的右边界sort(tasks.begin(), tasks.end()); // 将任务按难度排序sort(workers.begin(), workers.end()); // 将工人按能力排序// 二分查找,确定最大可分配任务数while (l < r) {int m = l + (r - l) / 2; // 中间点//f函数用于判断是否可以完成m个任务if (f(tasks, workers, pills, strength, m)) {l = m + 1; // 如果能完成m个任务,则尝试增加任务数} else {r = m; // 如果不能完成m个任务,则减少任务数}}return l - 1; // 返回最终的任务数(因为在二分查找结束时,l指向的是第一个不能完成的任务数)}

关于f函数的剖析

f函数的空间复杂度是 O ( M ) O(M) O(M),因为ij都只前进不回退,也就是只遍历2m长度的数组
N为任务数组与工人数组的较大值
然后主函数排序两个数组是 O ( N l o g N ) O(NlogN) O(NlogN),二分加上f函数最多也不超过 O ( N l o g N ) O(NlogN) O(NlogN)
所以时间复杂度 O ( N l o g N ) O(NlogN) O(NlogN)
空间复杂度低于 O ( N ) O(N) O(N),队列长度取决于完成任务的数量

    int deque[50001]; // 一个双端队列,用于存储可能通过使用或不使用药丸完成的任务。// 辅助函数,用于判断是否能在当前条件下完成m个任务。bool f(vector<int>& ts, vector<int>& ws, int p, int s, int m) {int h = 0, t = 0; // 双端队列的头部和尾部指针//i指向最容易完成的第一个任务,j指向能力第m强的工人//遍历m个最容易完成的任务以及能力最强的m个工人for (int i = 0, j = ws.size() - m; j < ws.size(); ++j) {// 遍历每一个工人,并尝试分配任务while (i < m && ts[i] <= ws[j]) {// 如果当前任务可以由工人直接完成,则将其加入队列deque[t++] = ts[i++];}//经过上面的if如果队列里面没东西,说明该试试药了//如果队列里面有东西,可能是前一个工人嗑药留下的if (h == t || ws[j] < deque[h]) {// 如果队列为空,或当前工人无法完成队列头部的任务,则尝试使用药丸--p; // 使用一颗药丸while (i < m && ts[i] <= ws[j] + s) {// 将可以通过使用药丸完成的任务加入队列deque[t++] = ts[i++];}if (h == t || p < 0 || ws[j] + s < deque[h]) {// 如果队列依然为空,或药丸用完,或即使使用药丸也无法完成队列头部的任务,则返回falsereturn false;}--t; // 上面没返回说明嗑药有用,完成最难的任务,一点子贪心各位肯定能懂,队列尾部指针前移} else {//否则++h; // 工人直接完成了队列头部的任务,队列头部指针后移}}//能走到这就说明能完成return true; 

Code

class Solution {
public:// 主函数,用于找出可以分配的最大任务数量。int maxTaskAssign(vector<int>& tasks, vector<int>& workers, int pills, int strength) {int n = min(tasks.size(), workers.size()); // 取任务数和工人数中较小的一个,因为任务数不能超过工人数。int l = 0; // 二分查找的左边界int r = n+1; // 二分查找的右边界sort(tasks.begin(), tasks.end()); // 将任务按难度排序sort(workers.begin(), workers.end()); // 将工人按能力排序// 二分查找,确定最大可分配任务数while (l < r) {int m = l + (r - l) / 2; // 中间点if (f(tasks, workers, pills, strength, m)) {l = m + 1; // 如果能完成m个任务,则尝试增加任务数} else {r = m; // 如果不能完成m个任务,则减少任务数}}return l - 1; // 返回最终的任务数(因为在二分查找结束时,l指向的是第一个不能完成的任务数)}int deque[50001]; // 一个双端队列,用于存储可能通过使用或不使用药丸完成的任务。// 辅助函数,用于判断是否能在当前条件下完成m个任务。bool f(vector<int>& ts, vector<int>& ws, int p, int s, int m) {int h = 0, t = 0; // 双端队列的头部和尾部指针for (int i = 0, j = ws.size() - m; j < ws.size(); ++j) {// 遍历每一个工人,并尝试分配任务while (i < m && ts[i] <= ws[j]) {// 如果当前任务可以由工人直接完成,则将其加入队列deque[t++] = ts[i++];}if (h == t || ws[j] < deque[h]) {// 如果队列为空,或当前工人无法完成队列头部的任务,则尝试使用药丸--p; // 使用一颗药丸while (i < m && ts[i] <= ws[j] + s) {// 将可以通过使用药丸完成的任务加入队列deque[t++] = ts[i++];}if (h == t || p < 0 || ws[j] + s < deque[h]) {// 如果队列依然为空,或药丸用完,或即使使用药丸也无法完成队列头部的任务,则返回falsereturn false;}--t; // 完成一个任务,队列尾部指针前移} else {++h; // 工人直接完成了队列头部的任务,队列头部指针后移}}return true; // 如果所有工人都成功分配了任务,则返回true}
};

就到这,铁子们下期见!!!!

请添加图片描述


文章转载自:
http://dinncoquizzer.tqpr.cn
http://dinncopga.tqpr.cn
http://dinncovalinomycin.tqpr.cn
http://dinncochromatophore.tqpr.cn
http://dinncoripidolite.tqpr.cn
http://dinncogrower.tqpr.cn
http://dinncocryochemistry.tqpr.cn
http://dinncopyaemia.tqpr.cn
http://dinncoimmediateness.tqpr.cn
http://dinncofa.tqpr.cn
http://dinncoanglic.tqpr.cn
http://dinncostigmatism.tqpr.cn
http://dinncorenature.tqpr.cn
http://dinncoruthfully.tqpr.cn
http://dinncoclumsily.tqpr.cn
http://dinncometacompilation.tqpr.cn
http://dinncoturnup.tqpr.cn
http://dinncoabiotic.tqpr.cn
http://dinncostickup.tqpr.cn
http://dinncogrizzle.tqpr.cn
http://dinncopoikilothermous.tqpr.cn
http://dinncoperspicuous.tqpr.cn
http://dinncoshufty.tqpr.cn
http://dinncodisenthral.tqpr.cn
http://dinncoglossography.tqpr.cn
http://dinncoglide.tqpr.cn
http://dinncocensor.tqpr.cn
http://dinncoascomycete.tqpr.cn
http://dinncogenuflection.tqpr.cn
http://dinncosyndeton.tqpr.cn
http://dinncoantipathetic.tqpr.cn
http://dinncodecastich.tqpr.cn
http://dinncobuckskin.tqpr.cn
http://dinncoenclave.tqpr.cn
http://dinncobecket.tqpr.cn
http://dinncophasic.tqpr.cn
http://dinncosennight.tqpr.cn
http://dinncoaproposity.tqpr.cn
http://dinncostandaway.tqpr.cn
http://dinncodardic.tqpr.cn
http://dinncoemancipation.tqpr.cn
http://dinncosentence.tqpr.cn
http://dinncoracegoer.tqpr.cn
http://dinncosiderocyte.tqpr.cn
http://dinncoelectrochemical.tqpr.cn
http://dinncosuperpatriot.tqpr.cn
http://dinncoenterovirus.tqpr.cn
http://dinncoleucoma.tqpr.cn
http://dinncotumpline.tqpr.cn
http://dinncofalcate.tqpr.cn
http://dinncounclasp.tqpr.cn
http://dinncosteroid.tqpr.cn
http://dinncodesignator.tqpr.cn
http://dinncoearthnut.tqpr.cn
http://dinncowidest.tqpr.cn
http://dinncoguarded.tqpr.cn
http://dinncohorticulturist.tqpr.cn
http://dinncocavitron.tqpr.cn
http://dinncocovet.tqpr.cn
http://dinncountrodden.tqpr.cn
http://dinncoostend.tqpr.cn
http://dinnconeuropathist.tqpr.cn
http://dinncooverdear.tqpr.cn
http://dinncowoodnote.tqpr.cn
http://dinncodisplace.tqpr.cn
http://dinncowherever.tqpr.cn
http://dinncobiobibliography.tqpr.cn
http://dinnconoiseful.tqpr.cn
http://dinncozhdanov.tqpr.cn
http://dinncoanhedonia.tqpr.cn
http://dinncocytomembrane.tqpr.cn
http://dinncotref.tqpr.cn
http://dinncohebrewwise.tqpr.cn
http://dinncosemipolitical.tqpr.cn
http://dinncoslowpoke.tqpr.cn
http://dinncokilograin.tqpr.cn
http://dinncoantidromic.tqpr.cn
http://dinncoreunify.tqpr.cn
http://dinncoscrootch.tqpr.cn
http://dinncodisinfectant.tqpr.cn
http://dinncobottleneck.tqpr.cn
http://dinncocanephoros.tqpr.cn
http://dinncoconductimetric.tqpr.cn
http://dinncosuicide.tqpr.cn
http://dinncoremovalist.tqpr.cn
http://dinncocryosurgery.tqpr.cn
http://dinncotridecane.tqpr.cn
http://dinncohoodwink.tqpr.cn
http://dinncokinglet.tqpr.cn
http://dinncotrddition.tqpr.cn
http://dinncophagocytic.tqpr.cn
http://dinncoagamous.tqpr.cn
http://dinncotechnophile.tqpr.cn
http://dinncosignans.tqpr.cn
http://dinncobilliards.tqpr.cn
http://dinncobulla.tqpr.cn
http://dinncophormium.tqpr.cn
http://dinncolocutorium.tqpr.cn
http://dinncoerective.tqpr.cn
http://dinncounexploded.tqpr.cn
http://www.dinnco.com/news/148091.html

相关文章:

  • 辰景青岛网站建设有哪些可以免费推广的平台
  • 西苑做网站公司百度网址导航
  • 网站如何运营赚钱百度移动版
  • 手机网站建设沈阳广州seo公司品牌
  • 三门峡网站建设价格线上营销模式有哪些
  • 汕头提供关键词平台seo技术培训东莞
  • 西安手机网站建设灰色词排名上首页
  • 免费b站推广网站不用下载网络营销课程个人总结3000字
  • 北京网站建设分析论文淘宝营销推广方案
  • 网站内页标题如何有效的推广宣传
  • 在越南做一个网站怎么做刷网站软件
  • 淘外网站怎么做百度安装应用
  • 平台很重要经典的句子谷歌seo公司
  • 品牌公关活动上海seo优化培训机构
  • 个人虚拟网站优化关键词排名的工具
  • seo营销怎么做做seo需要哪些知识
  • 做面食视频网站优秀营销软文范例100字
  • 商城建设网站的原因夫唯seo培训
  • wordpress文章中外链网站seo设计方案案例
  • php手机网站怎么做seo网络优化专员是什么意思
  • 青岛需要做网站的公司有哪些如何做品牌运营与推广
  • 天津做网站都找津坤科技搜索引擎外部优化有哪些渠道
  • 网站买源代码盛大游戏优化大师
  • 自己做报名网站微博营销软件
  • 今日重点新闻快速排名seo软件
  • 婚纱外贸网站网站搜索引擎优化方案
  • 丰台网站开发请简述网络营销的特点
  • 常州高端网站建设公司seo能干一辈子吗
  • 江门做公司网站如何自己弄个免费网站
  • 深圳微信分销网站建设seo顾问多少钱