广联达7/29第二题(菜鸟编写)
/** 题目描述: * 我们希望一个序列中的元素是各不相同的,但是理想和现实往往是有差距的。现在给出一个序列A,其中难免有些相同的元素,现在提供了一种变化方式,使得经过若干次操作后一定可以得到一个元素各不相同的序列。 * 这个操作是这样的,令x为序列中最小的有重复的数字,你需要删除序列左数第一个x,并把第二个x替换为2*x。 * 请你输出最终的序列。 * 例如原序列是[2,2,1,1,1],一次变换后变为[2,2,2,1],两次变换后变为[4,2,1],变换结束 * * 输入描述 * 输入第一行包含一个正整数n,表示序列的长度为n。(1<=n<=50000) 第二行有n个整数,初始序列中的元素。(1<=a_i<=10^8) 输出描述 * 输出包含若干个整数,即最终变换之后的结果。 */
思路:先将数组元素放入list集合和优先队列,使用优先队列出栈最小值,
在list集合中查找该元素是否重复,如果重复,则对list集合进行修改删除操作(更新),
将更新后的数据存入新的优先队列中。继续进行第二轮出栈。
如果最小元素没有重复,则list集合不更新,优先队列也不更新。
如此重复,知道list集合中没有重复元素为止。
public static List<Integer> adjustArray(int[] nums) {//使用优先队列对数据进行调List<Integer> list = new ArrayList<Integer>();for (int m : nums) {list.add(m);}Iterator<Integer> iterator = list.iterator();PriorityQueue<Integer> queue = new PriorityQueue<Integer>();//入队列while (iterator.hasNext()) {queue.offer(iterator.next());}for (int n = 0; n < queue.size(); n++) {//取出最小值int min = queue.poll();//计算重复次数int count = 0;//定位重复元素的索引int fristIndex = 0;int secondIndex = 0;//验证最小值是否重复for (int i = 0; i < list.size(); i++) {if (list.get(i) == min) {count++;//数据重复if (count == 1){fristIndex = i;}if (count == 2) {//定位第二个重复数据secondIndex = i;break;}}}//如果有重复数据,删除第一个重复数据,修改第二个重复数据,并且更新队列if (count == 2) {list.set(secondIndex, list.get(secondIndex) * 2);list.remove(fristIndex);//修改后,更新队列PriorityQueue<Integer> queue2 = new PriorityQueue<Integer>();for (int j = 0; j < list.size(); j++) {queue2.offer(list.get(j));queue = queue2;}}//更新计数器count = 0;//更新nn = 0;}return list; }
广联达7/29第二题(菜鸟编写)相关推荐
- 第二题:编写程序,将华氏度转换为摄氏度
#include"stdio.h" void main() {float f,c;printf("please input the Fahrenheit :\n" ...
- 用python编写程序、判断某一年是否是闰年_恳求尽量编写下列程序题 6.编写程序,判断某一年是否是闰年。(闰年的条件是:能被4整除,但是不能...
恳求尽量编写下列程序题6.编写程序,判断某一年是否是闰年.(闰年的条件是:能被4整除,但是不能被100整除,或者可以被400整除.)7.输入一个华氏温度,要求输出摄氏温度,输出时要求... 恳求尽量编 ...
- 2012百度之星冬季赛第二场第二题 消去游戏I
2012百度之星冬季赛第二场第二题 消去游戏I 题目: Alice和Bob又开始发明新游戏了,这回的名字叫消去游戏. 消去游戏的道具是一堆排成一行的积木,每个积木上面都有一个数字Ai.同时游戏也需要M ...
- 第九届蓝桥杯省赛C++A组第二题 ---星期一
题目 第二题 星期一 整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一? (不要告诉我你不知道今天是星期几) 注意:需要提交的只是一个整数,不要填写任何多余的内容或说 ...
- 第一章第二题(显示五条消息)(Display five messages)
第一章第二题(显示五条消息)(Display five messages) 1.2(显示五条消息)编写程序,显示 Welcome to Java 五次. 1.2 (Display five messa ...
- 【2017年】阿里巴巴算法笔试第二题
第二题:菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(sku)的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们拣选. 有一天沐哲去菜鸟仓 ...
- 2012-2020蓝桥C++ B组蓝桥杯省赛真题(第二题)
http://t.csdn.cn/xUQT1 原文链接 目录 2012第二题:福尔摩斯探险 2013第二题:马虎的算式 2014第二题:切面条 2015第二题:星系炸弹 2016第二题:生日蜡烛 20 ...
- 2015年第十届蓝桥杯省赛C++A组【第二题:星系炸弹】
第二题 2.星系炸弹 题目描述 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置, ...
- 《c primer pius》第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的
<c primer pius>第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处 ...
最新文章
- firefox+linux+nginx搭建server与client通过证书双向认证环境
- Windows Server 2012正式版RDS系列⑥
- 全国大学生电工数学建模竞赛赛题_A
- python中frozenset( )和set()的用法区别
- 柯里化的前生今世(四):编译器与解释器
- 【翻译】使用PowerShell获取网站运行时数据
- windows查看usb信息命令_Linux dumpe2fs命令:查看文件系统信息
- 天津联通集中备份系统应用
- everedit选择_【EverEdit怎么用】EverEdit好不好_使用技巧-ZOL软件百科
- 算法系列经典书籍:计算机算法设计与分析(第三版)-王晓东编著-电子工业出版社(高清版课本+课后习题答案)
- 数据结构与算法-普利姆算法(Prim) | 尚硅谷韩顺平
- 一键部署天猫精灵高分电影推荐语音技能
- python作业爬取xxx大学排行
- 第四届-模拟智能灌溉系统
- win10电脑人脸识别库安装及使用
- Hadoop or TDengine,如何做物联网大数据平台的选型?
- 四大跨境电商平台对比:亚马逊、ebay、速卖通、wish
- X射线荧光光谱(XRF)原理
- 【FFmpeg】视频scale缩放之后尺寸与设置值不一致
- OWC-Excel电子表格应用收藏
热门文章
- three.js精灵模型-下雨场景效果模拟
- 【产业互联网周报】Zoom曝重大安全漏洞;普华永道:2019下半年TMT行业投资金额环比上升39%...
- Python网络编程——HTTP协议学习笔记
- python高级(元类、自定义元类)
- C语言整型数据(整数)
- 多多客开源版,微信开放平台的小程序SaaS 系统,基于doodoo.js,vue.js 1
- 《憨豆特工2》[BD-R/880M][中英双字][1024分辨率]
- 100% 远程办公也能培养企业文化、享受乐趣并组建办公空间 #Party Space
- JArray 的排序
- CSVreader和POI操作用法比较,以及CSVReader的坑