2 minutes

# Leetcode 2178

2178. Maximum Split of Positive Even Integers

## The Idea of this Solution:

We can subtract multiples of `2`

from the number until it is smaller than or equal to `0`

. Then if it is smaller we can remove the absolute value of the number from the result.

For example:

`input: finalSum = 28`

`finalSum = 26, res = [2]`

`finalSum = 22, res = [2, 4]`

`finalSum = 16, res = [2, 4, 6]`

`finalSum = 8, res = [2, 4, 6, 8]`

`finalSum = -2, res = [2, 4, 6, 8, 10]`

Since `finalSum`

is negative we have to make it `0`

. To do this we have to remove `2`

from `res`

to cancel out the `-2`

in `finalSum`

.

`finalSum = 0, res = [4, 6, 8, 10]`

Remember that this is not the only solution.

We know that `even - even = even`

(ie. `8 - 2 = 6`

). And since we only have even numbers in `res`

we can just remove the number from `res`

.

Removeing the element from `res`

is pretty simple since all numbers are sorted and they are even. We can just find the index that we want to remove by doing `(finalSum * -1) / 2`

(The `finalSum * -1`

is to make `finalSum`

positive). Since we know the position of the number that we want to remove we can just use golang slice tricks to remove it.

```
func maximumEvenSplit(finalSum int64) []int64 {
if finalSum % 2 == 1 { // odd
return []int64{}
}
res := []int64{}
i := int64(0)
for finalSum > 0 {
i += 2
res = append(res, i)
finalSum -= i
}
if finalSum < 0 {
// Remove the element from res using slice tricks
index := (finalSum * -1) / 2
res = append(res[: index - 1], res[index:]...)
}
return res
}
```