File tree 2 files changed +42
-1
lines changed
2 files changed +42
-1
lines changed Original file line number Diff line number Diff line change 834
834
| 2733 | [Neither Minimum nor Maximum](https://leetcode.com/problems/neither-minimum-nor-maximum) | [](src/NeitherMinimumNorMaximum.java) | |
835
835
| 2739 | [Total Distance Traveled](https://leetcode.com/problems/total-distance-traveled) | [](src/TotalDistanceTraveled.java) | |
836
836
| 2744 | [Find Maximum Number of String Pairs](https://leetcode.com/problems/find-maximum-number-of-string-pairs) | [](src/FindMaximumNumberOfStringPairs.java) | |
837
- | 2748 | [Number of Beautiful Pairs](https://leetcode.com/problems/number-of-beautiful-pairs) | | |
837
+ | 2748 | [Number of Beautiful Pairs](https://leetcode.com/problems/number-of-beautiful-pairs) | [](src/)NumberOfBeautifulPairs.java) | |
838
838
| 2760 | [Longest Even Odd Subarray With Threshold](https://leetcode.com/problems/longest-even-odd-subarray-with-threshold) | | |
839
839
| 2765 | [Longest Alternating Subarray](https://leetcode.com/problems/longest-alternating-subarray) | | |
840
840
| 2769 | [Find the Maximum Achievable Number](https://leetcode.com/problems/find-the-maximum-achievable-number) | | |
Original file line number Diff line number Diff line change
1
+ // https://leetcode.com/problems/number-of-beautiful-pairs/description
2
+ // N: length of number array
3
+ // m: size of average number
4
+ // T: O(N * log(m))
5
+ // S: O(N)
6
+
7
+ import java .util .HashMap ;
8
+ import java .util .Map ;
9
+
10
+ public class NumberOfBeautifulPairs {
11
+ public int countBeautifulPairs (int [] array ) {
12
+ final Map <Integer , Integer > firstDigitFrequencies = new HashMap <>();
13
+ int pairs = 0 ;
14
+ for (int element : array ) {
15
+ final int firstDigit = getFirstDigit (element );
16
+ final int lastDigit = getLastDigit (element );
17
+ for (Map .Entry <Integer , Integer > entry : firstDigitFrequencies .entrySet ()) {
18
+ if (gcd (lastDigit , entry .getKey ()) == 1 ) {
19
+ pairs += entry .getValue ();
20
+ }
21
+ }
22
+ firstDigitFrequencies .put (firstDigit , firstDigitFrequencies .getOrDefault (firstDigit , 0 ) + 1 );
23
+ }
24
+ return pairs ;
25
+ }
26
+
27
+ private int getFirstDigit (int number ) {
28
+ return (number + "" ).charAt (0 ) - '0' ;
29
+ }
30
+
31
+ private int getLastDigit (int number ) {
32
+ return number % 10 ;
33
+ }
34
+
35
+ // T: O(log(max(a, b)))
36
+ // S: O(log(max(a, b)))
37
+ private int gcd (int a , int b ) {
38
+ if (b == 0 ) return a ;
39
+ return gcd (b , a % b );
40
+ }
41
+ }
You can’t perform that action at this time.
0 commit comments