LeetCode 1054. 距离相等的条形码(优先队列)
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 <= 10000
1 <= barcodes[i] <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/distant-barcodes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 对数字计数
- 插入优先队列,数量多的先出队
- 从0开始隔一个插入一个,然后从1开始插空
class Solution {struct cmp{bool operator()(pair<int,int>& a, pair<int,int>& b){return a.second < b.second;}//小就是大顶堆};
public:vector<int> rearrangeBarcodes(vector<int>& barcodes) {if(barcodes.size() <= 2)return barcodes;int n = barcodes.size(), i = 0, tpnum, tpcount;bool reachEnd = false;unordered_map<int,int> m;for(auto& b : barcodes)m[b]++;//计数priority_queue<pair<int,int>, vector<pair<int,int>>,cmp> q;for(auto& mi : m)q.push(mi);vector<int> 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;}
};
LeetCode 1054. 距离相等的条形码(优先队列)相关推荐
- Leetcode 1054 距离相等的条形码 (C++题解)
在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]. 请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等. 你可以返回任何满足该要求的答案,此题保证存在答案. 示例 1 ...
- 1054. 距离相等的条形码
在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]. 请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等. 你可以返回任何满足该要求的答案,此题保证存在答案. 示例 1 ...
- LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)
文章目录 1. 题目 2. 解题 2.1 贪心错误解 2.2 优先队列/单调队列 1. 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k . 一开始你在下标 0 处.每一步,你最多可 ...
- LeetCode LCP 30. 魔塔游戏(优先队列)
文章目录 1. 题目 2. 解题 1. 题目 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1. 每个房间的补血道具/怪物对于血量影响记于数组 nums,其中: 正数表示道具补血数 ...
- LeetCode 253. 会议室 II(贪心+优先队列)
文章目录 1. 题目 2. 解题 1. 题目 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],-] (si < ei), 为避免会议冲突,同时 ...
- LeetCode 1030. 距离顺序排列矩阵单元格(排序Lambda表达式BFS)
文章目录 1. 题目 2. 解题 2.1 multimap 2.2 Lambda 表达式排序 2.3 BFS搜索 1. 题目 给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 ...
- leetcode 1030. 距离顺序排列矩阵单元格(bfs)
给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C. 另外,我们在该矩阵中给出了一个坐标为 (r0, c0 ...
- LeetCode 1834. 单线程 CPU(排序 + 优先队列)
文章目录 1. 题目 2. 解题 1. 题目 给你一个二维数组 tasks ,用于表示 n 项从 0 到 n - 1 编号的任务. 其中 tasks[i] = [enqueueTimei, ...
- LeetCode 1792. 最大平均通过率(优先队列)
文章目录 1. 题目 2. 解题 1. 题目 一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试. 给你一个二维数组 classes ,其中 classes[i] = [pas ...
最新文章
- Dedesql数据库类详解(二次开发必备教程)(转)
- mysql dump 10.13_mysqldump版本引起的问题
- 实习生解雇_我们解雇了我们的顶尖人才。 我们做出的最佳决定。
- [转]Flex与.NET互操作(三):基于WebService的数据访问(下)
- 优酷VIP被黑灰产恶意冒领出现BUG 用户疯抢一年VIP
- 【Clickhouse】Clickhouse 普通视图
- 提速30倍!这个加速包让Python代码飞起来
- 图神经网络总结(GCN/GAT/GraphSAGE/DeepWalk/TransE)
- mount 开机自动挂载
- win10计算机删除用户密码,怎么删除win10电脑上的账户密码
- 软件研发管理之版本管理
- Http请求报文解析
- HTTPS双向认证+USB硬件加密锁(加密狗)配置
- 题目58 工厂流水线调度(ok)
- Android Studio搭建阿里云生活物联网平台自有品牌APP
- 从零开始——Emacs 安装配置使用教程 2015
- c语言重新定义网络体系结构,基于Internet的C语言疑难解答系统论文.doc
- Planned Delivery Time Calculation
- Serializable接口和Parcelable接口
- Android 模拟器指令(全)