Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 26bd397

Browse files
solves #2748: Number of Beautiful Pairs in java
1 parent c4401ee commit 26bd397

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

‎README.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@
834834
| 2733 | [Neither Minimum nor Maximum](https://leetcode.com/problems/neither-minimum-nor-maximum) | [![Java](assets/java.png)](src/NeitherMinimumNorMaximum.java) | |
835835
| 2739 | [Total Distance Traveled](https://leetcode.com/problems/total-distance-traveled) | [![Java](assets/java.png)](src/TotalDistanceTraveled.java) | |
836836
| 2744 | [Find Maximum Number of String Pairs](https://leetcode.com/problems/find-maximum-number-of-string-pairs) | [![Java](assets/java.png)](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) | [![Java](assets/java.png)](src/)NumberOfBeautifulPairs.java) | |
838838
| 2760 | [Longest Even Odd Subarray With Threshold](https://leetcode.com/problems/longest-even-odd-subarray-with-threshold) | | |
839839
| 2765 | [Longest Alternating Subarray](https://leetcode.com/problems/longest-alternating-subarray) | | |
840840
| 2769 | [Find the Maximum Achievable Number](https://leetcode.com/problems/find-the-maximum-achievable-number) | | |

‎src/NumberOfBeautifulPairs.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /