比方说,给你 finalSum = 12 ,那么这些拆分是 符合哀求 的(互不相同的正偶数且和为 finalSum):
(2 + 10) ,(2 + 4 + 6) 和 (4 + 8) 。
它们中,(2 + 4 + 6) 包含最多数目的整数。把稳 finalSum 不能拆分成 (2 + 2 + 4 + 4) ,由于拆分出来的整数必须互不相同。

请你返回一个整数数组,表示将整数拆分成 最多 数目的正偶数数组。
如果没有办法将 finalSum 进行拆分,请你返回一个 空 数组。你可以按 任意 顺序返回这些整数。
示例 1:输入:finalSum = 12 输出:[2,4,6]
阐明:以下是一些符合哀求的拆分:(2 + 10),(2 + 4 + 6) 和 (4 + 8) 。
(2 + 4 + 6) 为最多数目的整数,数目为 3 ,以是我们返回 [2,4,6] 。
[2,6,4] ,[6,2,4] 等等也都是可行的解。
示例 2:输入:finalSum = 7 输出:[]
阐明:没有办法将 finalSum 进行拆分。
以是返回空数组。
示例 3:输入:finalSum = 28 输出:[6,8,2,12]
阐明:以下是一些符合哀求的拆分:(2 + 26),(6 + 8 + 2 + 12) 和 (4 + 24) 。
(6 + 8 + 2 + 12) 有最多数目的整数,数目为 4 ,以是我们返回 [6,8,2,12] 。
[10,2,4,12] ,[6,2,4,16] 等等也都是可行的解。
提示:1 <= finalSum <= 1010
解题思路剖析1、贪心;韶光繁芜度O(n^(1/2)),空间繁芜度O(n^(1/2))
func maximumEvenSplit(finalSum int64) []int64 { if finalSum%2 == 1 { return nil } res := make([]int64, 0) for i := int64(2); i <= finalSum; i = i + 2 { res = append(res, i) finalSum = finalSum - i // 减去当前值 } res[len(res)-1] = res[len(res)-1] + finalSum // 剩下数加到末了1位 return res}
总结
Medium题目,采取贪心思路,依次从小到大添加,剩下不足加到末了1位