You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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;
}
}
}
这种最值问题我总觉得是不是有两种做法:
这道题显然不能用二分法,所以只能用贪心。
从2开始,依次
+=2
,直到finalSum小于等于0,顺便记录。如果刚好等于0,则算了;否则将剩余的finalSum值加入到list结果里的最后一个值。有点类似求一个整数的因数那样?稍微有点不懂。
The text was updated successfully, but these errors were encountered: