Leetcode 2178. Maximum Split of Positive Even Integers
Woodyiiiiiii opened this issue · comments
这种最值问题我总觉得是不是有两种做法:
- 二分
- 贪心
这道题显然不能用二分法,所以只能用贪心。
从2开始,依次+=2
,直到finalSum小于等于0,顺便记录。如果刚好等于0,则算了;否则将剩余的finalSum值加入到list结果里的最后一个值。
有点类似求一个整数的因数那样?稍微有点不懂。
class Solution {
public List<Long> maximumEvenSplit(long finalSum) {
List<Long> list = new ArrayList<>();
if (finalSum % 2 != 0) {
return list;
}
long num = 2;
long sum = 0;
while (finalSum > 0) {
sum = finalSum;
finalSum -= num;
if (finalSum >= 0) {
list.add(num);
num += 2;
}
}
if (finalSum == 0) {
return list;
} else {
long last = list.get(list.size() - 1);
list.remove(list.size() - 1);
list.add(last + sum);
return list;
}
}
}