跳到主要内容

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

链接:2178.拆分成最多数目的正偶数之和
难度:Medium
标签:贪心、数学、回溯
简介:给你一个整数 finalSum 。请你将它拆分成若干个 互不相同 的正偶数之和,且拆分出来的正偶数数目 最多 。

题解 1 - cpp

  • 编辑时间:2023-07-06
  • 执行用时:200ms
  • 内存消耗:39.5MB
  • 编程语言:cpp
  • 解法介绍:贪心。
class Solution {
public:
vector<long long> maximumEvenSplit(long long finalSum) {
vector<long long> res;
if (finalSum % 2 != 0) return res;
for (int num = 2; finalSum >= num; num += 2) {
res.push_back(num);
finalSum -= num;
}
res[res.size() - 1] += finalSum;
return res;
}
};

题解 2 - python

  • 编辑时间:2023-07-06
  • 执行用时:624ms
  • 内存消耗:25.6MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def maximumEvenSplit(self, finalSum: int) -> List[int]:
res = []
if finalSum % 2 != 0: return res
num = 2
while num <= finalSum:
res.append(num)
finalSum -= num
num += 2
res[-1] += finalSum
return res

题解 3 - rust

  • 编辑时间:2023-07-06
  • 执行用时:40ms
  • 内存消耗:3.2MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn maximum_even_split(mut final_sum: i64) -> Vec<i64> {
let mut res = vec![];
if final_sum % 2 == 0 {
let mut num = 2;
while num <= final_sum {
res.push(num);
final_sum -= num;
num += 2;
}
*res.last_mut().unwrap() += final_sum;
}
res
}
}