当前位置: 首页 > news >正文

1054. 距离相等的条形码(leetcode,堆问题,priority_queue)-------------------c++实现

1054. 距离相等的条形码(leetcode,堆问题,priority_queue)-------------------c++实现

题目表述

在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。

请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。

样例

示例 1:

输入:barcodes = [1,1,1,2,2,2]
输出:[2,1,2,1,2,1]
示例 2:

输入:barcodes = [1,1,1,1,2,2,3,3]
输出:[1,3,1,3,2,1,2,1]

条件

1 <= barcodes.length <= 10000
1 <= barcodes[i] <= 10000

思路

先通过unordered_map记录各个数出现的个数,然后通过priority进行堆排序,每次在可允许输出的情况下(前一个数不是当前最大数||当前为空)先输出最大值。

注意点

ac代码

c++:

class Solution {
public:vector<int> rearrangeBarcodes(vector<int>& barcodes) {unordered_map<int,int> number_time;vector<int> result;for(auto x:barcodes)number_time[x]++;priority_queue<pair<int,int>> members;for(auto &x:number_time)members.push({x.second,x.first});while(members.size()){auto now = members.top();//answer writing//auto [x,cx] = members.top();members.pop();// cout<<now.first<<"  "<<now.second<<" ";if(result.empty()||now.second!=result[result.size()-1])//can sit the biggest member{result.push_back(now.second);now.first--;}else{auto nowNext = members.top();members.pop();result.push_back(nowNext.second);nowNext.first--;if(nowNext.first>0)members.push(nowNext);}if(now.first>0)members.push(now);// cout<<"resultSize:"<<result.size()<<endl;}return result;}
};

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

相关文章:

1054. 距离相等的条形码(leetcode,堆问题,priority_queue)-------------------c++实现

1054. 距离相等的条形码&#xff08;leetcode,堆问题&#xff0c;priority_queue&#xff09;-------------------c实现 题目表述 在一个仓库里&#xff0c;有一排条形码&#xff0c;其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码&#xff0c;使其中任意两个相…...

QT开发实战-动态壁纸软件

动态壁纸软件开发 项目源代码在下面链接获取: ----------------------------- 开发者:CodeSharkSJ 希望此项目能加强你对Qt的应用 文章目录 项目图与开发环境核心技术原理自定义窗口程序UI布局背景绘制样式表基本实现QWebEngineQMedia使用系统托盘隐藏记忆功能应用程序打包 …...

Netty核心组件模块(一)

1.Bootstrap和ServerBootstrap 1>.Bootstrap意思是引导,一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是客户端程序的启动引导类,ServerBootstrap是服务端启动引导类; 2>.常见的方法有: ①.public ServerBootstr…...

Robot Framework+Jenkins持续集成UI自动化项目

使用Robot Framework框架可进行Web端和APP端的UI自动化测试&#xff0c;为方便定时执行&#xff0c;可将Robot Framework的自动化项目持续集成至Jenkins平台&#xff0c;具体的操作步骤如下&#xff1a; 安装Jenkins的步骤如下&#xff1a; 手把手教小白安装Jenkins_程序员馨馨…...

【ROS】ROS1编程速览

1、简述 很多项目已经转向ROS2&#xff0c;本人作为ROS小白从ROS1开始学起&#xff0c;但是不会深入学习ROS1&#xff0c;只一带而过。 下面只了解一些ROS1中的概念和基本编程接口。 ROS1中有两种通信模式&#xff1a;话题模式和服务模式&#xff0c;区别如下 2、话题模式 …...

探索智能化:TOOM解析未来稿件校验系统的技术进展与应用展望

在信息时代&#xff0c;随着大数据、人工智能和自然语言处理等技术的快速发展&#xff0c;稿件校验系统正朝着智能化的方向迈进。智能化的稿件校验系统能够更准确、高效地检测虚假信息、抄袭行为以及提升文章质量。本文将探讨智能化稿件校验系统的技术进展与应用展望&#xff0…...

Java程序员从青铜到王者,不同段位的薪资和技能变化

想要薪资高&#xff0c;段位就得跟上&#xff0c;对于Java程序员来说&#xff0c;从青铜到王者&#xff0c;需要经历多个阶段&#xff0c;每个阶段需要掌握的技能都不一样。 今天&#xff0c;我们一起来看看每个段位都有什么特点、需要具备哪些“大杀”技能&#xff0c;也看看…...

tinyWebServer 学习笔记——二、HTTP 连接处理

文章目录 一、基础知识1. epoll2. 再谈 I/O 复用3. 触发模式和 EPOLLONESHOT4. HTTP 报文5. HTTP 状态码6. 有限状态机7. 主从状态机8. HTTP_CODE9. HTTP 处理流程 二、代码解析1. HTTP 类2. 读取客户数据2. epoll 事件相关3. 接收 HTTP 请求4. HTTP 报文解析5. HTTP 请求响应 …...

深入浅析Linux Perf 性能分析工具及火焰图

Perf Event 子系统 Perf 是内置于 Linux 内核源码树中的性能剖析&#xff08;profiling&#xff09;工具。它基于事件采样的原理&#xff0c;以性能事件为基础&#xff0c;支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。可用于性能瓶颈的查找与热点代码的定位…...

java关键术语

java具有11个关键的术语,这些术语是从java的设计者所编写的白皮书中摘取,这些术语分别为:简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、多态性。以下开始我们将逐一解说这些术语。 一、简单性 Java是C++语法的纯净版本,剔…...

1. 两数之和【简单】

题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺…...

《编码——隐匿在计算机软硬件背后的语言》精炼——第17章(自动操作)

夫道成于学而藏于书&#xff0c;学进于振而废于穷。 文章目录 完善加法器加入代码的加法器扩大加数范围自由调用地址的加法器合并代码RAM和数据RAMJump指令硬件实现条件Jump指令零转移的硬件实现条件Jump指令的例子 总结 完善加法器 我们在第14章介绍了一个可以进行连加的加法…...

用Colab免费部署AI绘画云平台Stable Diffusion webUI

Google Colab 版的 Stable Diffusion WebUI 1.4 webui github 地址&#xff1a;https://github.com/sd-webui/stable-diffusion-webui 平台搭建 今天就来交大家如果来搭建和使用这个云平台。 第一步: 打开链接 https://colab.research.google.com/github/altryne/sd-webu…...

R.I.P,又一位程序员巨佬——左耳朵耗子陨落

震惊&#xff01;谣言吧&#xff01;求辟谣&#xff01;默哀&#xff01; 左耳朵耗子&#xff0c;在程序员这个群体里应该属于 GOAT 的存在了&#xff0c;虽然每个人心目中都有自己的 GOAT&#xff0c;但耗子叔的影响力可以说是有目共睹。 我也是在技术群刷到这张图片的&#…...

捷威信keithley吉时利2410数字源表 销售回收KEITHLEY2470新款源表

吉时利Keithley 2410 /2470高压源表/数字源表 产品概览 Keithley 2410 高压源表专为需要紧密耦合源和测量的测试应用而设计。Keithly 2410 提供精密电压和电流源以及测量功能。它既是高度稳定的直流电源&#xff0c;又是真正的仪器级 5-1/2 数字万用表。电源特性包括低噪声、…...

第二十九回:如何给ListView添加分隔线

文章目录 概念介绍添加方法使用属性装饰器 示例代码经验总结&#xff1a; 我们在上一章回中介绍了多种创建ListView的方式,本章回中将介绍" 如何给ListView添加分隔线".闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在这里说的分隔线也叫Divider,…...

用友 LRP计划维护视图

select planlotnumber 计划单号, demandId 自动编号, PartId 物料Id , sotype 单据类型(1:销售/2:预测), sodid 销售订单明细Id , socode 销售订单单号 , soseq 销售订单行号, PlanCode 计划单号 , DueDate 完工日期 , StartDate 开工日期 , UnitCode 主计量单位, C…...

数组--part 5--螺旋矩阵(力扣59/54)(剑指offer 29)

文章目录 基本算法思想leetcode 59 螺旋矩阵 IIleetcode 54 螺旋矩阵剑指Offer 29 顺时针打印矩阵 基本算法思想 建议先去把题目看了&#xff0c;再来思考相关的代码。 错误的想法&#xff1a;实际上这种题型并不存在算法&#xff0c;只涉及到模拟&#xff0c;但是模拟难度并…...

加密解密软件VMProtect入门使用教程(九)许可制度之许可系统功能

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…...

MySQL基础-事务详解

本文主要介绍MySQL事务 文章目录 前言事务定义事务四大特性&#xff08;ACID&#xff09; 事务操作事务并发问题事务隔离级别 前言 参考链接&#xff1a; 链接1链接2 事务定义 事务是一组操作的集合&#xff0c;他是一个不可分割的工作单位&#xff0c;事务会把所有的操作作…...

Java项目中常用的中间件及其高频问题避坑

Java项目中常用的中间件及其高频问题避坑如下: 一、常用中间件分类及作用 1. ​​消息队列中间件​​ ​​作用​​:解耦系统、异步通信、削峰填谷。​​代表产品​​: ​​Kafka​​:高吞吐量流处理,适合日志收集、实时分析。​​RocketMQ​​:金融级可靠性,支持事务消…...

【C++快读快写】

算法竞赛中用于解决卡常问题 int rd(){int k 0;char c getchar();while(!isdigit(c)){c getchar();}while(isdigit(c)){k (k << 1) (k << 3) (c^0), c getchar();}return k; }void wr(int x) {if (x > 9)wr(x / 10);putchar((x % 10) ^ 0); }用法&#x…...

金融系统渗透测试

金融系统渗透测试是保障金融机构网络安全的核心环节&#xff0c;它的核心目标是通过模拟攻击手段主动发现系统漏洞&#xff0c;防范数据泄露、资金盗取等重大风险。 一、金融系统渗透测试的核心框架 合规性驱动 需严格遵循《网络安全法》《数据安全法》及金融行业监管要求&am…...

Linux 常用命令语法总结

Linux 常用命令语法总结 1. 文件和目录操作 1.1 基本文件操作 # 列出文件和目录 ls # 列出当前目录内容 ls -l # 详细列表格式 ls -la # 显示隐藏文件 ls -lh # 人性化显示文件大小 ls...

ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器

版本和环境信息如下&#xff1a; PC平台&#xff1a; Windows 11 专业版 Zephyr开发环境&#xff1a;v4.1.0 Windows 下搭建 Zephyr 开发环境 WeAct BlackPill V1.2开发板&#xff1a; WeAct STM32F411CEU6 BlackPill 核心板 Debug调试器&#xff1a; ST-LINK V2: ST-LINK V2 S…...

AI浪潮下的IT行业:威胁、转变与共生之道

目录 前言1 AI在IT行业的具体应用场景1.1 软件开发中的AI助手1.2 运维与监控的智能化1.3 测试自动化与质量保障1.4 安全防护中的智能威胁识别 2 AI对IT从业者的实际影响2.1 工作内容的结构性变化2.2 技能结构的再平衡 3 IT从业者不可替代的能力与价值3.1 复杂系统的架构与抽象能…...

Python 函数全攻略:函数进阶(生成器、闭包、内置函数、装饰器、推导式)

一、默认参数中的易错点 问题: 当函数的默认参数是可变类型(如 list, dict)时,存在“坑”。 现象: def func(a2=[]): # a2 默认是一个空列表a2.append(2)print(a2)func() # 第一次调用,a2 默认为 [],输出 [2] func([]) # 传入新列表,输出 [2] func([1]) # 传入带元素的…...

产品经理课程(九)

从需求到功能设计 &#xff08;一&#xff09;复习 产品规划&#xff1a;产品定位、阶段性计划 产品定位&#xff1a;产品画布&#xff08;9个步骤&#xff1b;最重要的是先解决什么问题&#xff09; &#xff08;Roadmap&#xff09;目标要素&#xff1a;时间、事项、里程碑…...

传输层:udp与tcp协议

目录 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 netstat pidof 如何学习下三层协议 UDP协议 UDP协议端格式 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 TCP协议 TCP协议段格式 1.源端口号…...

全新Xsens Animate版本是迄今为止最大的软件升级,提供更清晰的数据、快捷的工作流程以及从录制开始就更直观的体验

我们整合了专业人士喜爱的 Xsens 动捕功能&#xff0c;并使其更加完善。全新Xsens Animate版本是我们迄今为止最大的软件升级&#xff0c;旨在提供更清晰的数据、更快捷的工作流程以及从录制开始就更直观的体验。 从制作游戏动画到流媒体直播头像或构建实时电影内容&#xff0…...