力扣第237周周赛(下)

  • 题目
  • 思路与算法
  • 代码实现
  • 写在最后

题目

    1. 单线程 CPU
    1. 所有数对按位与结果的异或和

思路与算法

  1. 第一题属于一类cpu流水线题目,实现常规方法堆加排序即可。
  2. 第二题属于数学题了,证明略,用的时候再查也行。

代码实现

  1. 单线程 CPU
// 本题我愿称之为CPU流水线题目
class Task {public:int index;int start_time;int last_time;Task(int x,int y,int z): index(x),start_time(y),last_time(z){}Task() = default;
};
/*运用最小堆来进行排序,按照start_time排序,按照last_time排序,作为两个堆,我们先将按照所有任务送入start_time排序,按照cpu的执行规则,当前时间下按照last_time顺序进入执行阶段。执行完后将执行时间给加上,计算当前时间,再根据当前时间继续进行判断执行。
*/
class Solution {public:vector<int> getOrder(vector<vector<int>>& tasks) {vector<int> ans;auto cmp_last_times =[](Task a,Task b){return a.last_time == b.last_time ? a.index > b.index : a.last_time > b.last_time;};auto cmp_start_time = [](Task a, Task b){return a.start_time > b.start_time;};priority_queue<Task,vector<Task>,decltype(cmp_last_times)> qtimes(cmp_last_times);priority_queue<Task, vector<Task>, decltype(cmp_start_time)> qstart(cmp_start_time);int n = tasks.size();//将所有任务装入qstart 按照start排序for (int i = 0; i < n; ++i){qstart.push({i, tasks[i][0], tasks[i][1]});}//定义当前时间int now = qstart.top().start_time;while (qstart.size() > 0){//将start_time<=now的task扔进qtimes中while (qstart.size() > 0 && qstart.top().start_time <= now){qtimes.push(qstart.top());qstart.pop();}//从qtimes 选择task来完成if (qtimes.size() > 0){Task x = qtimes.top();qtimes.pop();ans.push_back(x.index);now += x.last_time;}//当前now没有可以完成的任务else{now = qstart.top().start_time;}}//完成剩余的任务while (qtimes.size() > 0){Task x = qtimes.top();qtimes.pop();ans.push_back(x.index);}return ans;}
};
  1. 所有数对按位与结果的异或和
class Solution {public int getXORSum(int[] arr1, int[] arr2) {int sum1 = 0;int sum2 = 0;for (int i : arr1) {sum1 ^= i;}for (int i : arr2) {sum2 ^= i;}return sum1 & sum2;}
}

写在最后

  1. 冲!

20210424:力扣第237周周赛(下)相关推荐

  1. 20210422:力扣第237周周赛题解记录(上)

    力扣第237周周赛(上) 题目 思路与算法 代码实现 写在最后 题目 判断句子是否为全字母句 雪糕的最大数量 思路与算法 没什么需要解释的,这周这两题过于水了... 代码实现 判断句子是否为全字母句 ...

  2. 20211202:力扣第268周周赛(下)

    力扣第268周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 区间内查询数字的频率 k 镜像数字的和 思路与算法 第三题直接map加二分即可,见代码 这个第四题看了大家的题解有直接打表的,这题 ...

  3. 20211130:力扣第267周周赛(下)

    力扣第267周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 2075 解码斜向换位密码 2076.处理含限制条件的好友请求 思路与算法 第三题是一个比较简单的索引计算题,只需要将斜着放的字符 ...

  4. (补)20210623:力扣第246周周赛(下)

    力扣第246周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 统计子岛屿 查询差绝对值的最小值 思路与算法 统计子岛屿 : 老DFS了,总之就是遍历题,无需多言,搜就行了. 查询差绝对值的最小 ...

  5. 20210602:力扣第243周周赛(下)

    力扣第243周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 使用服务器处理任务 准时抵达会议现场的最小跳过休息次数 思路与算法 使用服务器处理任务:典型双堆问题,逻辑清晰即可写出代码,今天两 ...

  6. 20210427:力扣第238周周赛(下)

    力扣第238周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 所有元音按顺序排布的最长子字符串 最高建筑高度 思路与算法 依旧是滑动窗口,再熟悉滑动窗口的写法即可. 不加解释,本题参考零神专业 ...

  7. 20210218:力扣第228周周赛(下)

    力扣第228周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 袋子里最少数目的球 一个图中连通三元组的最小度数 思路与算法 经典二分搜索题目,套模板,主要搞清楚如何检查遍历的每一个数是否符合不 ...

  8. 20201016:力扣第210周周赛题解(下)

    力扣第210周周赛题解(下) 题目 思路与算法 代码实现 写在最后 题目 分割两个字符串得到回文串 统计子树中城市之间最大距离 思路与算法 第三题主要逻辑通顺就行,注意分割的索引是一样的,那么判断回文 ...

  9. 20210612:力扣第244周周赛题解(上)

    力扣第244周周赛(上) 题目 思路与算法 代码实现 写在最后 题目 判断矩阵经轮转后是否一致 使数组元素相等的减少操作次数 思路与算法 判断矩阵经轮转后是否一致:本题的前置题目是这道46:.旋转图像 ...

最新文章

  1. PyTorch 的预训练,是时候学习一下了
  2. 15.QT布局管理及示例
  3. ThreadLocal的使用及原理分析
  4. android 验证输入,最佳实践:输入验证(Android)
  5. 保障粮食安全-农业大健康-温铁军 谋定落实粮食安全责任
  6. 疯狂的程序员-第三章
  7. 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
  8. JS和OC交互的简单应用
  9. rxjs里tap操作符的使用单步调试
  10. Apache TomEE(和Tomcat)的自签名证书
  11. Win10无管理员帐户,如何把自己提权为管理员
  12. python load
  13. H5播放Rtmp之Flowplayer播放
  14. 公链生态周报:币安下架BSV,链塔加入本体共建者计划 | 链塔智库
  15. 如何批量去除视频水印教程
  16. 前端基础----html初识、常用标签
  17. 负数时的有符号整型和无符号整型的转换
  18. OSDI 2021 VEGITO 论文阅读
  19. uluaFramework--框架简单介绍
  20. opc读取ab的plc数据_AB PLC通过opc方式连接的方法

热门文章

  1. 由于区块链的影响,我决定转行!
  2. 面试大厂被怼!这都搞不定,你只能做“搬运工”!
  3. 滴滴出行回应导航崩了;微信支付正式上线「向手机号转账」功能;Guns 6.0 发布 | 极客头条...
  4. 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军 IoT 这一年 | 问底中国 IT 技术演进
  5. 华为否认鸿蒙为噱头;谷歌公布 6 大 iOS 漏洞;GitLab 又发安全补丁 | 极客头条...
  6. 什么是5G?居然有人用漫画把它讲得如此接地气!
  7. 前端圈小可爱 Vue 的自白:我年少成名,却又屡陷 React、Angular 混战
  8. “小程序 · 云开发”重磅上线,让小程序开发更高效!
  9. 腾讯 WeGame 被迫下架《怪物猎人:世界》究竟该怪谁?| 畅言
  10. TIOBE 6 月编程语言排行榜:Java 放缓,C 复兴了!