/**
题目描述:
* 我们希望一个序列中的元素是各不相同的,但是理想和现实往往是有差距的。现在给出一个序列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第二题(菜鸟编写)相关推荐

  1. 第二题:编写程序,将华氏度转换为摄氏度

    #include"stdio.h" void main() {float f,c;printf("please input the Fahrenheit :\n" ...

  2. 用python编写程序、判断某一年是否是闰年_恳求尽量编写下列程序题 6.编写程序,判断某一年是否是闰年。(闰年的条件是:能被4整除,但是不能...

    恳求尽量编写下列程序题6.编写程序,判断某一年是否是闰年.(闰年的条件是:能被4整除,但是不能被100整除,或者可以被400整除.)7.输入一个华氏温度,要求输出摄氏温度,输出时要求... 恳求尽量编 ...

  3. 2012百度之星冬季赛第二场第二题 消去游戏I

    2012百度之星冬季赛第二场第二题 消去游戏I 题目: Alice和Bob又开始发明新游戏了,这回的名字叫消去游戏. 消去游戏的道具是一堆排成一行的积木,每个积木上面都有一个数字Ai.同时游戏也需要M ...

  4. 第九届蓝桥杯省赛C++A组第二题 ---星期一

    题目 第二题 星期一 整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一? (不要告诉我你不知道今天是星期几) 注意:需要提交的只是一个整数,不要填写任何多余的内容或说 ...

  5. 第一章第二题(显示五条消息)(Display five messages)

    第一章第二题(显示五条消息)(Display five messages) 1.2(显示五条消息)编写程序,显示 Welcome to Java 五次. 1.2 (Display five messa ...

  6. 【2017年】阿里巴巴算法笔试第二题

    第二题:菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(sku)的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们拣选. 有一天沐哲去菜鸟仓 ...

  7. 2012-2020蓝桥C++ B组蓝桥杯省赛真题(第二题)

    http://t.csdn.cn/xUQT1 原文链接 目录 2012第二题:福尔摩斯探险 2013第二题:马虎的算式 2014第二题:切面条 2015第二题:星系炸弹 2016第二题:生日蜡烛 20 ...

  8. 2015年第十届蓝桥杯省赛C++A组【第二题:星系炸弹】

    第二题 2.星系炸弹 题目描述 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置, ...

  9. 《c primer pius》第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的

    <c primer pius>第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处 ...

最新文章

  1. firefox+linux+nginx搭建server与client通过证书双向认证环境
  2. Windows Server 2012正式版RDS系列⑥
  3. 全国大学生电工数学建模竞赛赛题_A
  4. python中frozenset( )和set()的用法区别
  5. 柯里化的前生今世(四):编译器与解释器
  6. 【翻译】使用PowerShell获取网站运行时数据
  7. windows查看usb信息命令_Linux dumpe2fs命令:查看文件系统信息
  8. 天津联通集中备份系统应用
  9. everedit选择_【EverEdit怎么用】EverEdit好不好_使用技巧-ZOL软件百科
  10. 算法系列经典书籍:计算机算法设计与分析(第三版)-王晓东编著-电子工业出版社(高清版课本+课后习题答案)
  11. 数据结构与算法-普利姆算法(Prim) | 尚硅谷韩顺平
  12. 一键部署天猫精灵高分电影推荐语音技能
  13. python作业爬取xxx大学排行
  14. 第四届-模拟智能灌溉系统
  15. win10电脑人脸识别库安装及使用
  16. Hadoop or TDengine,如何做物联网大数据平台的选型?
  17. 四大跨境电商平台对比:亚马逊、ebay、速卖通、wish
  18. X射线荧光光谱(XRF)原理
  19. 【FFmpeg】视频scale缩放之后尺寸与设置值不一致
  20. OWC-Excel电子表格应用收藏

热门文章

  1. three.js精灵模型-下雨场景效果模拟
  2. 【产业互联网周报】Zoom曝重大安全漏洞;普华永道:2019下半年TMT行业投资金额环比上升39%...
  3. Python网络编程——HTTP协议学习笔记
  4. python高级(元类、自定义元类)
  5. C语言整型数据(整数)
  6. 多多客开源版,微信开放平台的小程序SaaS 系统,基于doodoo.js,vue.js 1
  7. 《憨豆特工2》[BD-R/880M][中英双字][1024分辨率]
  8. 100% 远程办公也能培养企业文化、享受乐趣并组建办公空间 #Party Space
  9. JArray 的排序
  10. CSVreader和POI操作用法比较,以及CSVReader的坑