Description
You are given an integer array nums of even length. You have to split the array into two parts nums1 and nums2 such that:
- nums1.length == nums2.length == nums.length / 2.
- nums1should contain distinct elements.
- nums2should also contain distinct elements.
Return true if it is possible to split the array, and false otherwise.
Β
Example 1:
Input: nums = [1,1,2,2,3,4] Output: true Explanation: One of the possible ways to split nums is nums1 = [1,2,3] and nums2 = [1,2,4].
Example 2:
Input: nums = [1,1,1,1] Output: false Explanation: The only possible way to split nums is nums1 = [1,1] and nums2 = [1,1]. Both nums1 and nums2 do not contain distinct elements. Therefore, we return false.
Β
Constraints:
- 1 <= nums.length <= 100
- nums.length % 2 == 0
- 1 <= nums[i] <= 100
Solution
Python3
class Solution:
    def isPossibleToSplit(self, nums: List[int]) -> bool:
        counter = Counter(nums)
        left = right = 0
        
        for v in counter.values():
            if v >= 2:
                left += 1
                right += 1
            else:
                if left <= right:
                    left += 1
                else:
                    right += 1
        
        return left == right == len(nums) // 2