LeetCode 1054. 距离相等的条形码(优先队列)
发布日期:2021-07-01 03:20:22
浏览次数:2
分类:技术文章
本文共 1296 字,大约阅读时间需要 4 分钟。
1. 题目
在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。
请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等。 你可以返回任何满足该要求的答案,此题保证存在答案。示例 1:输入:[1,1,1,2,2,2]输出:[2,1,2,1,2,1]示例 2:输入:[1,1,1,1,2,2,3,3]输出:[1,3,1,3,2,1,2,1] 提示:1 <= barcodes.length <= 100001 <= barcodes[i] <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/distant-barcodes 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
- 对数字计数
- 插入优先队列,数量多的先出队
- 从0开始隔一个插入一个,然后从1开始插空
class Solution { struct cmp { bool operator()(pair& a, pair & b) { return a.second < b.second;}//小就是大顶堆 };public: vector rearrangeBarcodes(vector & barcodes) { if(barcodes.size() <= 2) return barcodes; int n = barcodes.size(), i = 0, tpnum, tpcount; bool reachEnd = false; unordered_map m; for(auto& b : barcodes) m[b]++;//计数 priority_queue , vector >,cmp> q; for(auto& mi : m) q.push(mi); vector ans(n,0); while(!q.empty()) { tpnum = q.top().first; tpcount = q.top().second; q.pop(); while(i < n && !reachEnd && tpcount) { while(i < n && tpcount) { ans[i] = tpnum; tpcount--; i += 2; } if(i >= n) { reachEnd = true;//到达末尾了 i = 1;//填写偶数位 } } while(i < n && tpcount) { ans[i] = tpnum; tpcount--; i += 2; } } return ans; }};
转载地址:https://michael.blog.csdn.net/article/details/104317529 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月25日 07时49分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
谈创新和效率,如何总结分享. 归类,几大类
2019-05-03
架构图(拓扑图)画图工具分析整理(静态,动态,可交互图.层级tu)
2019-05-03
test 博客园功能 和 搜索 seo 能力
2019-05-03
待学习
2019-05-03
山东科技大学2015-2016学年第一学期程序设计基础期末考试第一场 题解
2019-05-03
Python教程-----引用模块
2019-05-03
山东科技大学2020年4月9日题解
2019-05-03
蓝桥杯题解(二)
2019-05-03
蓝桥杯题解(三)
2019-05-03
数学建模需要的Matlab知识速成,两小时Matlab速成,Matlab小白教程
2019-05-03
逆向工程核心原理笔记(一)——Hello World-2
2019-05-03
逆向工程核心原理笔记(三)——IA-32寄存器
2019-05-03
Ngrok内网穿透教程(国内地址)
2019-05-03
SpringBoot利用AOP防止请求重复提交
2019-05-03
Linux下安装Mysql5..7(Centos7)--亲测
2019-05-03
Linux下安装Nginx(Centos7)
2019-05-03
Linux下安装JDK(Centos7)
2019-05-03
SQL优化--大数据量模糊查询缓慢
2019-05-03