fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. private static int digitSum(int n) {
  5. int sum = 0;
  6. while (n > 0) {
  7. sum += n % 10;
  8. n /= 10;
  9. }
  10. return sum;
  11. }
  12.  
  13. public static void main(String[] args) {
  14. int[] nums = {51, 71, 17, 42};
  15.  
  16. Map<Integer, PriorityQueue<Integer>> map = new HashMap<>();
  17.  
  18. // Step 1: Group by digit sum
  19. for (int num : nums) {
  20. int sum = digitSum(num);
  21. map.putIfAbsent(sum, new PriorityQueue<>(Collections.reverseOrder()));
  22. map.get(sum).add(num);
  23. }
  24.  
  25. int maxSum = -1;
  26. List<int[]> maxPairs = new ArrayList<>();
  27.  
  28. // Step 2: For each group, check top 2 numbers
  29. for (PriorityQueue<Integer> pq : map.values()) {
  30. if (pq.size() >= 2) {
  31. int first = pq.poll();
  32. int second = pq.poll();
  33. int sum = first + second;
  34.  
  35. if (sum > maxSum) {
  36. maxSum = sum;
  37. maxPairs.clear();
  38. maxPairs.add(new int[]{first, second});
  39. } else if (sum == maxSum) {
  40. maxPairs.add(new int[]{first, second});
  41. }
  42. }
  43. }
  44.  
  45. // Output result
  46. System.out.println("Maximum Sum: " + maxSum);
  47. System.out.println("Pairs:");
  48. for (int[] pair : maxPairs) {
  49. System.out.println(pair[0] + " " + pair[1]);
  50. }
  51. }
  52. }
  53.  
Success #stdin #stdout 0.19s 57636KB
stdin
6 
12 33 6 85 51 42
stdout
Maximum Sum: 93
Pairs:
51 42