fork download
  1. import java.util.*;
  2.  
  3. class Main {
  4. // Function to compute sum of digits
  5. private static int digiSum(int n) {
  6. int sum = 0;
  7. while (n > 0) {
  8. sum += n % 10;
  9. n /= 10;
  10. }
  11. return sum;
  12. }
  13.  
  14. private static int solve(int[] nums, int n) {
  15. HashMap<Integer, Integer> mp = new HashMap<>(); // digitSum -> largest number with this digitSum
  16. int maxi = -1; // final answer (if no pair found, remain -1)
  17.  
  18. for (int num : nums) {
  19. int ds = digiSum(num);
  20.  
  21. if (mp.containsKey(ds)) {
  22. // If same digit sum already exists, try pairing
  23. int pairSum = mp.get(ds) + num;
  24. maxi = Math.max(maxi, pairSum);
  25.  
  26. // Update stored value to be the maximum number with this digit sum
  27. mp.put(ds, Math.max(mp.get(ds), num));
  28. } else {
  29. // First time seeing this digit sum
  30. mp.put(ds, num);
  31. }
  32. }
  33. return maxi;
  34. }
  35.  
  36. public static void main(String[] args) {
  37. Scanner sc = new Scanner(System.in);
  38. int n = sc.nextInt();
  39. int[] nums = new int[n];
  40. for (int i = 0; i < n; i++) {
  41. nums[i] = sc.nextInt();
  42. }
  43. int ans = solve(nums, n);
  44. System.out.println(ans);
  45. }
  46. }
  47.  
Success #stdin #stdout 0.17s 56580KB
stdin
6
12 33 6 85 51 42
stdout
93