Skip to content

Commit 873ecf7

Browse files
solves relative sort array
1 parent 9badb0b commit 873ecf7

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@
299299
| 1108 | [Defanging an IP Address](https://leetcode.com/problems/defanging-an-ip-address) | [![Java](assets/java.png)](src/DefangingAnIPAddress.java) | |
300300
| 1118 | 🔒 [Number of Days in a Month](https://leetcode.com/problems/number-of-days-in-a-month) | | |
301301
| 1119 | 🔒 [Remove Vowels From String](https://leetcode.com/problems/remove-vowels-from-a-string) | | |
302-
| 1122 | [Relative Sort Array](https://leetcode.com/problems/relative-sort-array) | | |
302+
| 1122 | [Relative Sort Array](https://leetcode.com/problems/relative-sort-array) | [![Java](assets/java.png)](src/RelativeSortArray.java) | |
303303
| 1128 | [Number of Equivalent Domino Pairs](https://leetcode.com/problems/number-of-equivalent-domino-pairs) | [![Java](assets/java.png)](src/NumberOfEquivalentDominoPairs.java) | |
304304
| 1133 | 🔒 [Largest Unique Number](https://leetcode.com/problems/largest-unique-number) | | |
305305
| 1134 | 🔒 [Armstrong Number](https://leetcode.com/problems/armstrong-number) | | |

src/RelativeSortArray.java

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import java.util.Arrays;
2+
import java.util.HashMap;
3+
import java.util.Map;
4+
5+
public class RelativeSortArray {
6+
public int[] relativeSortArray(int[] arr1, int[] arr2) {
7+
final Map<Integer,Integer> elementWeight = new HashMap<>();
8+
for (int i = 0 ; i < arr2.length ; i++) elementWeight.put(arr2[i], i);
9+
Integer[] array = arrayFrom(arr1);
10+
Arrays.sort(array, (o1, o2) -> {
11+
if (elementWeight.containsKey(o1) && elementWeight.containsKey(o2)) {
12+
return elementWeight.get(o1) - elementWeight.get(o2);
13+
}
14+
if (elementWeight.containsKey(o1)) {
15+
return -1;
16+
}
17+
if (elementWeight.containsKey(o2)) {
18+
return 1;
19+
}
20+
return Integer.compare(o1, o2);
21+
});
22+
return toIntArray(array);
23+
}
24+
25+
private Integer[] arrayFrom(int[] array) {
26+
Integer[] result = new Integer[array.length];
27+
for (int index = 0 ; index < array.length ; index++) {
28+
result[index] = array[index];
29+
}
30+
return result;
31+
}
32+
33+
private int[] toIntArray(Integer[] array) {
34+
int[] result = new int[array.length];
35+
for (int index = 0 ; index < array.length ; index++) {
36+
result[index] = array[index];
37+
}
38+
return result;
39+
}
40+
}

0 commit comments

Comments
 (0)