元素合并②
合并相等的元素:
给你一个只有正整数的数组。当数组里有两个相等的元素时做如下操作:选择数组中出现两次及两次以上最小的元素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%
- 上传者