Skip to content

Commit 9831a36

Browse files
solves #2605: Form Smallest Number From Two Digit Arrays in java
1 parent ed0d722 commit 9831a36

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@
810810
| 2591 | [Distribute Money to Maximum Children](https://leetcode.com/problems/distribute-money-to-maximum-children) | [![Java](assets/java.png)](src/DistributeMoneyToMaximumChildren.java) | |
811811
| 2595 | [Number of Even and Odd Bits](https://leetcode.com/problems/number-of-even-and-odd-bits) | [![Java](assets/java.png)](src/NumberOfEvenAndOddBits.java) | |
812812
| 2600 | [K Items With the Maximum Sum](https://leetcode.com/problems/k-items-with-the-maximum-sum) | [![Java](assets/java.png)](src/KItemsWithTheMaximumSum.java) | |
813-
| 2605 | [Form Smallest Number From Two Digit Arrays](https://leetcode.com/problems/form-smallest-number-from-two-digit-arrays) | | |
813+
| 2605 | [Form Smallest Number From Two Digit Arrays](https://leetcode.com/problems/form-smallest-number-from-two-digit-arrays) | [![Java](assets/java.png)](src/FormSmallestNumberFromTwoDigitArrays.java) | |
814814
| 2605 | [Form Smallest Number From Two Digit Arrays](https://leetcode.com/problems/form-smallest-number-from-two-digit-arrays) | | |
815815
| 2609 | [Find the Longest Balanced Substring of a Binary String](https://leetcode.com/problems/find-the-longest-balanced-substring-of-a-binary-string) | | |
816816
| 2614 | [Prime In Diagonal](https://leetcode.com/problems/prime-in-diagonal) | | |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// https://leetcode.com/problems/form-smallest-number-from-two-digit-arrays
2+
// T: O(N log(N) + M log(M))
3+
// S: O(log(N) + log(M))
4+
5+
import java.util.Arrays;
6+
import java.util.HashSet;
7+
import java.util.Set;
8+
9+
public class FormSmallestNumberFromTwoDigitArrays {
10+
public int minNumber(int[] nums1, int[] nums2) {
11+
final Set<Integer> intersection = intersection(nums1, nums2);
12+
13+
if (!intersection.isEmpty()) {
14+
final int[] digits = toArray(intersection);
15+
Arrays.sort(digits);
16+
return digits[0];
17+
}
18+
19+
Arrays.sort(nums1);
20+
Arrays.sort(nums2);
21+
final int smallerDigit = Math.min(nums1[0], nums2[0]);
22+
final int largerDigit = Math.max(nums1[0], nums2[0]);
23+
return smallerDigit * 10 + largerDigit;
24+
}
25+
26+
private Set<Integer> intersection(int[] array1, int[] array2) {
27+
final Set<Integer> set1 = toSet(array1);
28+
final Set<Integer> set2 = toSet(array2);
29+
return intersection(set1, set2);
30+
}
31+
32+
private Set<Integer> toSet(int[] array) {
33+
final Set<Integer> set = new HashSet<>();
34+
for (int element : array) {
35+
set.add(element);
36+
}
37+
return set;
38+
}
39+
40+
private Set<Integer> intersection(Set<Integer> set1, Set<Integer> set2) {
41+
final Set<Integer> set = new HashSet<>();
42+
for (int element : set1) {
43+
if (set2.contains(element)) {
44+
set.add(element);
45+
}
46+
}
47+
return set;
48+
}
49+
50+
private int[] toArray(Set<Integer> set) {
51+
final int[] array = new int[set.size()];
52+
int index = 0;
53+
for (int element : set) {
54+
array[index++] = element;
55+
}
56+
return array;
57+
}
58+
}

0 commit comments

Comments
 (0)