最大子序列交替和
在一个整数列表中找到最大的子序列交替和。
子序列:每个元素都是在原列表中,并且要保持其在原列表中的先后顺序。(原列表:【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牛逼了吧!!!!