Problem
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
.nums1
should contain distinct elements.nums2
should also contain distinct elements.
Return true
if it is possible to split the array, and false
otherwise.
https://leetcode.cn/problems/split-the-array/
Example 1:
Input:
nums = [1,1,2,2,3,4]
Output:true
Explanation: One of the possible ways to split nums isnums1 = [1,2,3]
andnums2 = [1,2,4]
.
Example 2:
Input:
nums = [1,1,1,1]
Output:false
Explanation: The only possible way to split nums isnums1 = [1,1]
andnums2 = [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
Test Cases
1 | class Solution: |
1 | import pytest |
Thoughts
扫描数组,用字典记录每一个数字的次数,如果任何一个数字的次数超过 2 就返回 false。
可以用 Python 自带的 collections.Counter。但如果自己写循环处理,有可能更早地发现无法拆分,能节省一些时间。
Code
1 | from collections import defaultdict |