Array of Doubled Pairs LeetCode solution in Java
1class Solution {2public boolean canReorderDoubled(int[] arr) {3Map<Integer, Integer> map = new HashMap<>();4int zeroCount = 0, out = 0, len = arr.length;5Arrays.sort(arr);6for (int ar : arr) {7if (ar % 2 == 1) map.put(ar, map.getOrDefault(ar, 0) + 1);8else {9if (ar > 0) {10int val = map.getOrDefault(ar / 2, 0);11if (val > 0) {12out++;13map.put(ar / 2, val - 1);14} else map.put(ar, map.getOrDefault(ar, 0) + 1);15} else if (ar < 0) {16int val = map.getOrDefault(ar2, 0);17if (val > 0) {18out++;19map.put(ar2, val - 1);20} else map.put(ar, map.getOrDefault(ar, 0) + 1);21} else zeroCount++;22}23}24zeroCount = zeroCount / 2;25return out + zeroCount == len / 2;26}27}