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