Post

3704 Count Partitions With Even Sum Difference

3704 Count Partitions With Even Sum Difference

Count Partitions with Even Sum Difference image

You are given an integer array nums of length n.

A partition is defined as an index i where 0 <= i < n - 1, splitting the array into two non-empty subarrays such that:

1
2
Left subarray contains indices [0, i].
Right subarray contains indices [i + 1, n - 1].

Return the number of partitions where the difference between the sum of the left and right subarrays is even.

 

Example 1:

Input: nums = [10,10,3,7,6]

Output: 4

Explanation:

The 4 partitions are:

1
2
3
4
[10], [10, 3, 7, 6] with a sum difference of 10 - 26 = -16, which is even.
[10, 10], [3, 7, 6] with a sum difference of 20 - 16 = 4, which is even.
[10, 10, 3], [7, 6] with a sum difference of 23 - 13 = 10, which is even.
[10, 10, 3, 7], [6] with a sum difference of 30 - 6 = 24, which is even.

Example 2:

Input: nums = [1,2,2]

Output: 0

Explanation:

No partition results in an even sum difference.

Example 3:

Input: nums = [2,4,6,8]

Output: 3

Explanation:

All partitions result in an even sum difference.

 

Constraints:

1
2
2 <= n == nums.length <= 100
1 <= nums[i] <= 100
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

class Solution:
    def countPartitions(self, nums: List[int]) -> int:
        left = []
        right = []
        temp = 0
        for k in nums:
            temp += k
            left.append(temp)

        temp = 0
        for k in nums[::-1]:
            temp += k
            right.append(temp)
        right.reverse()
        res = 0
        #print(left, right)
        for i , k in enumerate(left[:-1]):
            if abs(k - right[i+1]) % 2 == 0:
                res += 1

        return res




This post is licensed under CC BY 4.0 by the author.