在一个仓库里,有一排条形码,其中第 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
这个题写的比较麻烦,应该是我想复杂了。一开始用的优先队列,但是有的样例不对,所以我先用的优先队列,之后再判断的,应该有更简单的方法。。

class Solution {public:vector<int> rearrangeBarcodes(vector<int>& barcodes) {int maxx=1e4+100;int a[maxx];memset(a,0,sizeof(a));struct node{int num;int cnt;int flag;node(int x,int y,int z){num=x,cnt=y,flag=z;}bool operator <(const node &a)const{if(cnt!=a.cnt) return cnt<a.cnt;else return num>a.num;}};for(int i=0;i<barcodes.size();i++) a[barcodes[i]]++;priority_queue<node> p;for(int i=1;i<=10000;i++){if(a[i]) p.push(node(i,a[i],0));}vector <int> q,qq,pos;while(p.size()){node a=p.top();p.pop();q.push_back(a.num);a.cnt--;a.flag++;if(a.cnt) p.push(a);}for(int i=0;i<q.size()-1;i++){if(q[i]==q[i+1]){qq.push_back(q[i]);pos.push_back(i);}}if(qq.size()==0) return q;else {for(int i=0;i<pos.size();i++) q.erase(q.begin()+pos[i]-i);q.insert(q.begin(),0);q.insert(q.end(),0);int i=0;while(qq.size()>0){int x=qq[0];for(;i<q.size()-1;i++){if(x!=q[i]&&x!=q[i+1]){q.insert(q.begin()+i+1,x);qq.erase(qq.begin());break;}}if(i==q.size()-1) i=0;}q.erase(q.begin());q.erase(q.end()-1);return q;}}
};

努力加油a啊,(o)/~

1054. 距离相等的条形码相关推荐

  1. LeetCode 1054. 距离相等的条形码(优先队列)

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

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

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

  3. 贪心(Greedy Algorithm)

    贪心(Greedy Algorithm) 贪心 44.通配符匹配 45.跳跃游戏 II 55.跳跃游戏 122.买卖股票的最佳时机II 134.加油站 135.分发糖果 179.最大数 277.搜寻名 ...

  4. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  5. Java算法:LeetCode算法Java版合集513-1110题

    513. 找树左下角的值 题目描述 给定一个二叉树,在树的最后一行找到最左边的值. 示例 1: 输入:2/ \1 3 输出: 1 示例 2: 输入:1/ \2 3/ / \4 5 6/7 输出: 7 ...

  6. LeetCode 700题 题解答案集合 Python

    2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...

  7. Java 教程 目录

    教程 目录 1. 两数之和 118. 杨辉三角 136. 只出现一次的数字 187. 重复的DNA序列 219. 存在重复元素 II 223. 矩形面积 316. 去除重复字母 334. 递增的三元子 ...

  8. iOS 生成二维码/条形码

    级别:★★☆☆☆ 标签:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二维码加logo」 作者: Xs·H 审校: QiSh ...

  9. [第四章]开发小要点:提高条形码识别率

    关于如何提高条形码识别率,下面有几个要点: 条形码的图片质量很重要.通常,条形码识别器处理区域中像素的计数以确定条形码类型中特定条的宽度和位置.因此,如果分辨率不高,此过程会受到影响. 通常,分辨率至 ...

最新文章

  1. python基础---面向过程编程
  2. vs2015安装与单元测试以及经过优化的算法
  3. BZOJ-2242-计算器-SDOI2011-BSGS
  4. .以及JDK1.5ConcurrentHashMap新特性
  5. numpy的使用数组的创建2
  6. R实例:根据经纬度坐标批量返回行政区域信息
  7. 02-windows下elasticsearch安装elasticsearch-head
  8. loading窗口动画 web_分享web前端七款HTML5 Loading动画特效集锦
  9. Turbo C 编译错误信息
  10. flamingo源码分析(1) :单例模式
  11. 根据mac地址获取生产厂商
  12. Android 动画 Kotlin 教程
  13. 对数周期天线工作原理
  14. 信息 | 美国留学之计算机专业【转】
  15. 微信小程序把view居中_微信小程序view居中
  16. BZOJ 1406 AHOI2007 密码箱 数论
  17. p5.js动态图形临摹以及拓展
  18. 华硕X99-A II 安装使用 志强 XEON E5-1603 v4
  19. python判断x是否为奇数表达式_Python-day3
  20. 高可用架构的设计方法

热门文章

  1. 结构体和类的区别-Objective-C基础
  2. php %00,Nginx %00 null byte执行任意代码(php)漏洞
  3. java 长轮询_java – Spring中的长轮询
  4. iView Input 输入框表单非空校验,默认值是 Number 类型校验失败
  5. 用python做预测模型的好处_如何用Python在10分钟内建立一个预测模型
  6. 如何成为呼叫中心客服老司机
  7. 对接口编程:接口和抽象类
  8. Java8 新特性简介
  9. 熟悉又陌生 彪悍徐茂栋的双面人生
  10. yum因被锁定导致无法执行相关操作的解决方法