/ rignts / 题库 /

元素合并②

元素合并②

合并相等的元素:
给你一个只有正整数的数组。当数组里有两个相等的元素时做如下操作:选择数组中出现两次及两次以上最小的元素x。从左到右选择两个最左边的x进行合并。删除这两个x,并用2*x替换右边的x。重复这个步骤,直到没有重复的元素为止。
对于数组[3,4,2,2,2,1]的合并过程如下:
[3,4,1,2,2,1,1] -> [3,4,2,2,2,1] -> [3,4,4,2,1] -> [3,8,2,1]
对于数组[1,1,3,1,1]的合并过程如下:
[1,1,3,1,1] -> [2,3,1,1] -> [2,3,1,1] -> [2,3,2] -> [3,4]
对于数组[10,40,20,50,30]因为每个元素都不相同,因此无法合并。
请尽可能用效率高的方法解决.
 
输入:
输入包括2行:
第一行是一个正整数n(1<=n<=150 000)表示数组的元素个数。
第二行包括n个正整数a1,a2,…,an(1<=ai<=10^6)表示数组中的元素。
输出:
输出包括2行:
第一行一个正整数k,表示合并以后的数组的元素个数。
第二行包含k个正整数,表示合并以后的数组的元素。
样例:
Input:
7
3 4 1 2 2 1 1
 
Output:
4
3 8 2 1
 
Input:
5
1 1 3 1 1
 
Output:
2
3 4
 
Input:
5
10 40 20 50 30
 
Output:
5
10 40 20 50 30

信息

ID
1012
难度
9
分类
(无)
标签
(无)
递交数
1
已通过
1
通过率
100%
上传者