2748. Number of Beautiful Pairs

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
28
29
30
class Solution {
public int countBeautifulPairs(int[] nums) {
int pairs = 0;

int[] prefixCountMap = new int[10];

for (int num : nums) {
for (int i = 1; i < 10; i++) {
if (prefixCountMap[i] > 0 && gcd(i, num % 10) == 1) {
pairs += prefixCountMap[i];
}
}

prefixCountMap[getFirstDigit(num)]++;
}

return pairs;
}

private int getFirstDigit(int num) {
while (num >= 10) {
num /= 10;
}
return num;
}

private int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
}

References

2748. Number of Beautiful Pairs