最大子序列交替和

最大子序列交替和

在一个整数列表中找到最大的子序列交替和。

子序列:每个元素都是在原列表中,并且要保持其在原列表中的先后顺序。(原列表:【1,2,3,4】子列表:【1,3,4】、【2,4】但不能是【3,2】)

交替和:偶数索引的元素前面加正号,奇书索引的元素前面加符号。然后将子序列中所有元素加到一起计算出总和。

    def maxAlternatingSum(nums: list[int]) -> int:
        d0, d1 = 0, 0
        for x in nums:
            d0, d1 = max(d0, d1 + x), max(d1, d0 - x)
        return max(d0, d1)

我对这个函数的理解是:

d0和d1分别代表了当前索引为i时,前i-2项最大交替和,前i-1项最大交替和。

PS:最后只是惊叹于第一个写出这个解法的人,怎么想出来的呢!用的是人脑么?太TM牛逼了吧!!!!

Comments are closed.