lc2178. 拆分成最多数目的正偶数之和

题目链接:LC2178

题解

首先 finalSum 为奇数时,问题无解。接下来考虑偶数。

设 2,4,6,8,10,12… 这个公差为 2 的等差数列和为 S,题目就是要找一个最大的 i 满足 SifinalSumS_i \le finalSum,答案就是 [2,4,6,8...,2(i1),2i+SifinalSum][2,4,6,8...,2*(i-1),2*i+S_i-finalSum]

最后 cpp 求和时可能会超过 long long int 值域,可以用 python 写。

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
def maximumEvenSplit(self, finalSum: int) -> List[int]:
if finalSum%2 == 1:
return []
tmp_sum = 0
ans = []
now = 2
while finalSum >= tmp_sum + now:
ans.append(now)
tmp_sum += now
now += 2
ans[-1] += finalSum - tmp_sum
return ans

lc2178. 拆分成最多数目的正偶数之和

https://blog.xiang578.com/problem/lc2178.html

作者

Ryen Xiang

发布于

2023-07-07

更新于

2024-04-20

许可协议


网络回响

评论