-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathMaxPairSumInAnArray.java
More file actions
27 lines (25 loc) · 896 Bytes
/
MaxPairSumInAnArray.java
File metadata and controls
27 lines (25 loc) · 896 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// https://leetcode.com/problems/max-pair-sum-in-an-array
// T: O(N)
// S: O(1)
public class MaxPairSumInAnArray {
public int maxSum(int[] nums) {
final int[] digitMaxSum = new int[9];
int maxPairSum = 0;
for (int element : nums) {
final int maxDigit = getMaxDigit(element);
if (digitMaxSum[maxDigit - 1] != 0) {
maxPairSum = Math.max(maxPairSum, digitMaxSum[maxDigit - 1] + element);
}
digitMaxSum[maxDigit - 1] = Math.max(digitMaxSum[maxDigit - 1], element);
}
return maxPairSum == 0 ? -1 : maxPairSum;
}
private int getMaxDigit(int number) {
final String string = number + "";
int maxDigit = 0;
for (int i = 0 ; i < string.length() ; i++) {
maxDigit = Math.max(maxDigit, string.charAt(i) - '0');
}
return maxDigit;
}
}