第382场周赛
# 3020. 子集中元素的最大数量 (opens new window)
class Solution {
public int maximumLength(int[] nums) {
Map<Long,Integer> cnt = new HashMap<>();
for(int num:nums){
cnt.merge((long) num,1,Integer::sum);
}
Integer c = cnt.remove(1L);// 移除1
int ans = c!=null? c-(c%2^1):0;// 保证奇数个
for(long x:cnt.keySet()){
int res = 0;
for( ;cnt.getOrDefault(x,0)>1;x*=x){
res+=2;
}
// x^k是 单独一个
ans = Math.max(ans,res+(cnt.containsKey(x)?1:-1));
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19