LeetCode 2178. 拆分成最多数目的偶整数之和(等差数列求和)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 2178. 拆分成最多数目的偶整数之和(等差数列求和)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個整數(shù) finalSum 。請你將它拆分成若干個 互不相同 的偶整數(shù)之和,且拆分出來的偶整數(shù)數(shù)目 最多 。
- 比方說,給你 finalSum = 12 ,那么這些拆分是 符合要求 的(互不相同的偶整數(shù)且和為 finalSum):(2 + 10) ,(2 + 4 + 6) 和 (4 + 8) 。它們中,(2 + 4 + 6) 包含最多數(shù)目的整數(shù)。
注意 finalSum 不能拆分成 (2 + 2 + 4 + 4) ,因為拆分出來的整數(shù)必須互不相同。
請你返回一個整數(shù)數(shù)組,表示將整數(shù)拆分成 最多 數(shù)目的偶整數(shù)數(shù)組。
如果沒有辦法將 finalSum 進行拆分,請你返回一個 空 數(shù)組。你可以按 任意 順序返回這些整數(shù)。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximum-split-of-positive-even-integers
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
class Solution { public:vector<long long> maximumEvenSplit(long long finalSum) {if(finalSum&1) return {};// 第一項 2, 第n項 2n, 求和// s = (2+2n)*n/2 = n*(n+1)long long x = sqrt(finalSum);long long s = x*(x+1);while(s < finalSum){x++;s = x*(x+1);}if(s > finalSum)x--;vector<long long> ans(x);s = 0;for(long long i = 0; i < ans.size(); ++i){ans[i] = (i+1)<<1;s += ans[i];}ans.back() += finalSum-s;//把多余的補充給最后一個數(shù),肯定不重復return ans;} };156 ms 28.9 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 2178. 拆分成最多数目的偶整数之和(等差数列求和)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逻辑回归(logistic regres
- 下一篇: LeetCode 1905. 统计子岛屿