魔法师 (@Constanline) 在 Leetcode每日一题 —— 3640. 三段式数组 II 中发帖
思路
题还挺简单的,感觉不需要评为困难。
依然沿用昨天的思路,分为四个状态,在不同状态间转换。
不过因为要求和,所以要细心的把各种转换的情况下中间变量的变化情况理清楚。
第一段可以不全取,所以可以统计出除了这个阶段最后两个数以外的前缀和最小值,在转第二段时去掉这部分即可。
第二段必须全取,所以直接累计即可。
第三段需要每个元素都尝试计算和的最大值,除此之外等同于第一段。在遇到降序的数字时,直接认为是第一段即可。
代码
class Solution {
public long maxSumTrionic(int[] nums) {
// 上一个数,方便计算
int last = nums[0];
long ans = Long.MIN_VALUE;
// 第一段 到当前为止的最小值
lo...