Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Leetcode 2178. Maximum Split of Positive Even Integers #172

Open
Woodyiiiiiii opened this issue Jan 10, 2023 · 0 comments
Open

Leetcode 2178. Maximum Split of Positive Even Integers #172

Woodyiiiiiii opened this issue Jan 10, 2023 · 0 comments

Comments

@Woodyiiiiiii
Copy link
Owner

这种最值问题我总觉得是不是有两种做法:

  1. 二分
  2. 贪心

这道题显然不能用二分法,所以只能用贪心。

从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;
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant