2178.拆分成最多数目的正偶数之和
链接:2178.拆分成最多数目的正偶数之和
难度:Medium
标签:贪心、数学、回溯
简介:给你一个整数 finalSum 。请你将它拆分成若干个 互不相同 的正偶数之和,且拆分出来的正偶数数目 最多 。
题解 1 - 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
    }
}
题解 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 - 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;
    }
};