Skip to content

Commit 9a2debe

Browse files
refactor 954
1 parent 245a80b commit 9a2debe

File tree

1 file changed

+18
-25
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+18
-25
lines changed

src/main/java/com/fishercoder/solutions/_954.java

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,34 @@
11
package com.fishercoder.solutions;
22

33
import java.util.Arrays;
4+
import java.util.Comparator;
45
import java.util.HashMap;
56
import java.util.Map;
67

78
public class _954 {
89
public static class Solution1 {
10+
/**
11+
* credit: https://leetcode.com/problems/array-of-doubled-pairs/solution/
12+
*/
913
public boolean canReorderDoubled(int[] A) {
10-
for (int i = 0; i < A.length; i++) {
11-
if (A[i] < 0) {
12-
A[i] = -A[i];
13-
}
14-
}
15-
Arrays.sort(A);
1614
Map<Integer, Integer> map = new HashMap<>();
17-
for (int num : A) {
18-
map.put(num, map.getOrDefault(num, 0) + 1);
15+
for (int i : A) {
16+
map.put(i, map.getOrDefault(i, 0) + 1);
1917
}
20-
for (int num : A) {
21-
if (num != 0) {
22-
if (map.get(num) < 0) {
23-
return false;
24-
} else if (map.get(num) == 0) {
25-
continue;
26-
} else {
27-
int count = map.get(num);
28-
map.put(num, 0);
29-
int doubleNum = num * 2;
30-
if (!map.containsKey(doubleNum)) {
31-
return false;
32-
} else {
33-
map.put(doubleNum, map.get(doubleNum) - count);
34-
}
35-
}
36-
} else if (map.get(num) % 2 != 0) {
18+
Integer[] sorted = new Integer[A.length];
19+
for (int i = 0; i < A.length; i++) {
20+
sorted[i] = A[i];
21+
}
22+
Arrays.sort(sorted, Comparator.comparingInt(Math::abs));
23+
for (int num : sorted) {
24+
if (map.get(num) == 0) {
25+
continue;
26+
}
27+
if (!map.containsKey(2 * num) || map.get(2 * num) <= 0) {
3728
return false;
3829
}
30+
map.put(num, map.get(num) - 1);
31+
map.put(2 * num, map.get(2 * num) - 1);
3932
}
4033
return true;
4134
}

0 commit comments

Comments
 (0)