Formatted question description: https://leetcode.ca/all/2206.html

# 2206. Divide Array Into Equal Pairs (Easy)

You are given an integer array nums consisting of 2 * n integers.

You need to divide nums into n pairs such that:

• Each element belongs to exactly one pair.
• The elements present in a pair are equal.

Return true if nums can be divided into n pairs, otherwise return false.

Example 1:

Input: nums = [3,2,3,2,2,2]
Output: true
Explanation:
There are 6 elements in nums, so they should be divided into 6 / 2 = 3 pairs.
If nums is divided into the pairs (2, 2), (3, 3), and (2, 2), it will satisfy all the conditions.


Example 2:

Input: nums = [1,2,3,4]
Output: false
Explanation:
There is no way to divide nums into 4 / 2 = 2 pairs such that the pairs satisfy every condition.


Constraints:

• nums.length == 2 * n
• 1 <= n <= 500
• 1 <= nums[i] <= 500

Similar Questions:

## Solution 1. Counting

The count of each unique number should be even.

// OJ: https://leetcode.com/problems/divide-array-into-equal-pairs/
// Time: O(N)
// Space: O(U) where U is the number of unique numbers in A
class Solution {
public:
bool divideArray(vector<int>& A) {
unordered_map<int, int> m;
for (int n : A) m[n]++;
for (auto &[n, cnt] : m) {
if (cnt % 2) return false;
}
return true;
}
};


## Solution 2. Sorting

All even-indexed numbers should equal their next numbers.

// OJ: https://leetcode.com/problems/divide-array-into-equal-pairs/
// Time: O(NlogN)
// Space: O(1)
class Solution {
public:
bool divideArray(vector<int>& A) {
sort(begin(A), end(A));
for (int i = 0; i < A.size(); i += 2) {
if (A[i] != A[i + 1]) return false;
}
return true;
}
};