方法:模拟+哈希
class Solution {
public int maximumSum(int[] nums) {
int ans = -1;
Map<Integer, List<Integer>> map = new HashMap<>();
for (int num : nums) {
int sum = getSum(num);
List<Integer> list = map.get(sum);
if (map.get(sum) == null) {
list = new ArrayList<>();
list.add(num);
map.put(sum, list);
} else {
list.add(num);
map.put(sum, list);
}
}
for (List<Integer> list : map.values()) {
Collections.sort(list);
if (list.size() > 1) {
ans = Math.max(ans, list.get(list.size() - 2) + list.get(list.size() - 1));
}
}
return ans;
}
public int getSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
}
class Solution {
public int maximumSum(int[] nums) {
int ans = -1;
Map<Integer, PriorityQueue<Integer>> map = new HashMap<>();
for (int num : nums) {
int sum = getSum(num);
PriorityQueue<Integer> pq = map.get(sum);
if (pq == null) {
pq = new PriorityQueue<>((a, b) -> {
return b - a;
});
pq.offer(num);
map.put(sum, pq);
} else {
pq.offer(num);
map.put(sum, pq);
}
}
for (PriorityQueue<Integer> pq : map.values()) {
if (pq.size() > 1) {
ans = Math.max(ans, pq.poll() + pq.poll());
}
}
return ans;
}
public int getSum(int num) {
int sum = 0;
while (num > 0)
{
sum += num % 10;
num /= 10;
}
return sum;
}
}