今日题目
3432. Count Partitions with Even Sum Difference
解题思路
本题要求将数组划分为两部分,且这两部分之和的差为偶数。
要使差为偶数,两部分的和对 2 取模的结果必须相同,即两部分的和同为偶数或同为奇数。因此,整个数组的总和必须是偶数。
反过来说,若数组总和为偶数,则无论如何划分,两部分之和对 2 取模的结果必然相同。否则,数组总和将为奇数,不存在满足条件的划分。
由此得出结论:当数组总和为奇数时,答案为 0;当数组总和为偶数时,答案为 $n-1$。
解题方法
当数组总和为奇数时返回 0,为偶数时返回 $n-1$。
复杂度分析
- 时间复杂度:
$O(n)$,其中 n 为数组长度。
- 空间复杂度:
$O(n)$,其中 n 为数组长度。
代码
class Solution:
def countPartitions(self, nums: List[int]) -> int:
if sum(nums) % 2 == 1:
return 0
return len(nums) - 1