力扣-1800.最大升序子数组和

本文最后更新于:2022年10月7日 晚上

题目描述

第一张图

思路和实现

其实就是遍历一遍题目所给数组,使用一个max_sum保存当前最大和,tmp_sum保存当前子数组和,将当前元素和下个元素(若存在)进行比较,如果大于下个元素,说明该升序子数组结束,并和当前最大升序子数组元素和进行比较,否则计入当前子数组和。

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def maxAscendingSum(self, nums: List[int]) -> int:
max_sum: int = 0 # 当前最大和
tmp_sum: int = 0 # 当前子数组和
for i, num in enumerate(nums):
if (i + 1 < len(nums) and num >= nums[i + 1]) or i + 1 >= len(nums): # 当前元素大于下个元素,或没有下个元素,该升序子数组结束
tmp_sum += num
max_sum = max(max_sum, tmp_sum)
tmp_sum = 0 # 重置临时子数组和
elif i + 1 < len(nums): # 当前元素小于下个元素,后面的条件可省略不写
tmp_sum += num
return max_sum

(看完官方题解后:寄!以后要改掉我喜欢往后看的思想了!)
(没碰过动态规划的我:?这是什么.JPG)


这里有一只爱丽丝

希望本文章能够帮到您~


力扣-1800.最大升序子数组和
https://map1e-g.github.io/2022/10/07/leetcode-1800/
作者
MaP1e-G
发布于
2022年10月7日
许可协议