## Similar Problems

Similar Problems not available

# Ways To Make A Fair Array - Leetcode Solution

## Companies:

LeetCode: Ways To Make A Fair Array Leetcode Solution

Difficulty: Medium

Topics: prefix-sum array

The problem you are referring to is the "Ways to Make a Fair Array" problem on LeetCode. Here is a detailed solution to this problem:

Problem Statement
You are given an integer array `nums`

of even length `n`

. You must list indexed pairs `(i,j)`

such that `i < j`

and `nums[i] + nums[j]`

is even. You have to return the number of such indexed pairs.

Constraints:

`n == nums.length`

- 2 <= n <= 10^5
- n is even.
- 1 <-= nums[i] <-= 1000

Solution Approach
One approach to solving this problem is to iterate through the array `nums`

and keep a running count of the even and odd values seen so far. We can then calculate the number of pairs `(i,j)`

whose sum is even based on whether the sum of the even and odd numbers before the current index `i`

forms an even or odd total.

Algorithm:

- Initialize two variables -
`even_sum`

and`odd_sum`

- to store the sum of even and odd numbers respectively. - Create a variable
`count`

set to zero. - Loop through the array
`nums`

:- If the current number is even, add it to
`even_sum`

, else add it to`odd_sum`

. - Check if the sum of the even and odd numbers seen so far before the current index
`i`

forms an even or odd total. - If it forms an even total, increment the
`count`

by`i + 1`

. - If it forms an odd total, increment the
`count`

by`i`

.

- If the current number is even, add it to
- Return
`count`

.

Time Complexity The time complexity of this algorithm is O(n) since we loop through the array only once.

Space Complexity The space complexity of this algorithm is O(1) since we use only a constant amount of space.

Solution in Python:

```
def waysToMakeFair(nums):
even_sum = 0
odd_sum = 0
count = 0
for i in range(len(nums)):
if nums[i] % 2 == 0:
even_sum += nums[i]
else:
odd_sum += nums[i]
if even_sum == odd_sum:
count += i+1
elif (even_sum - odd_sum) == nums[i]:
count += i
return count
```

I hope this helps! Let me know if you have any questions or need further explanation.

## Ways To Make A Fair Array Solution Code

`1`