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. 距离相等的条形码(优先队列)相关推荐

  1. Leetcode 1054 距离相等的条形码 (C++题解)

    在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]. 请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等. 你可以返回任何满足该要求的答案,此题保证存在答案. 示例 1 ...

  2. 1054. 距离相等的条形码

    在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]. 请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等. 你可以返回任何满足该要求的答案,此题保证存在答案. 示例 1 ...

  3. LeetCode 1696. 跳跃游戏 VI(优先队列 / 单调队列)

    文章目录 1. 题目 2. 解题 2.1 贪心错误解 2.2 优先队列/单调队列 1. 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k . 一开始你在下标 0 处.每一步,你最多可 ...

  4. LeetCode LCP 30. 魔塔游戏(优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1. 每个房间的补血道具/怪物对于血量影响记于数组 nums,其中: 正数表示道具补血数 ...

  5. LeetCode 253. 会议室 II(贪心+优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],-] (si < ei), 为避免会议冲突,同时 ...

  6. LeetCode 1030. 距离顺序排列矩阵单元格(排序Lambda表达式BFS)

    文章目录 1. 题目 2. 解题 2.1 multimap 2.2 Lambda 表达式排序 2.3 BFS搜索 1. 题目 给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 ...

  7. leetcode 1030. 距离顺序排列矩阵单元格(bfs)

    给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C. 另外,我们在该矩阵中给出了一个坐标为 (r0, c0 ...

  8. LeetCode 1834. 单线程 CPU(排序 + 优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个二维数组 tasks ,用于表示 n​​​​​​ 项从 0 到 n - 1 编号的任务. 其中 tasks[i] = [enqueueTimei, ...

  9. LeetCode 1792. 最大平均通过率(优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试. 给你一个二维数组 classes ,其中 classes[i] = [pas ...

最新文章

  1. Dedesql数据库类详解(二次开发必备教程)(转)
  2. mysql dump 10.13_mysqldump版本引起的问题
  3. 实习生解雇_我们解雇了我们的顶尖人才。 我们做出的最佳决定。
  4. [转]Flex与.NET互操作(三):基于WebService的数据访问(下)
  5. 优酷VIP被黑灰产恶意冒领出现BUG 用户疯抢一年VIP
  6. 【Clickhouse】Clickhouse 普通视图
  7. 提速30倍!这个加速包让Python代码飞起来
  8. 图神经网络总结(GCN/GAT/GraphSAGE/DeepWalk/TransE)
  9. mount 开机自动挂载
  10. win10计算机删除用户密码,怎么删除win10电脑上的账户密码
  11. 软件研发管理之版本管理
  12. Http请求报文解析
  13. HTTPS双向认证+USB硬件加密锁(加密狗)配置
  14. 题目58 工厂流水线调度(ok)
  15. Android Studio搭建阿里云生活物联网平台自有品牌APP
  16. 从零开始——Emacs 安装配置使用教程 2015
  17. c语言重新定义网络体系结构,基于Internet的C语言疑难解答系统论文.doc
  18. Planned Delivery Time Calculation
  19. Serializable接口和Parcelable接口
  20. Android 模拟器指令(全)

热门文章

  1. SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)
  2. MVVM更容易内存泄露吗?
  3. Xml文档添加节点和属性
  4. .NET中得到计算机硬件信息
  5. linux编译动态库之fPIC
  6. 稚晖君又整活啦!基于全志F1C200s的超迷你
  7. Binder远程转本地
  8. php 解压dat,电脑微信dat文件怎么打开
  9. TQ210——交叉编译器的安装
  10. python 默认参数_有趣的 Python 特性 3 | 当心默认可变参数这个大猪蹄子。