LeetCode每日一题- day13
新手入坑LeetCode,每天打卡一道题
算法不一定很好,只是我自己的一个水平体现,做个自己刷题的记录,欢迎交流学习
(尽量AC LeetCode官方的每日一题)
欢迎交流学习!
题目:1800. 最大升序子数组和
给你一个正整数组成的数组 nums ,返回 nums 中一个 升序 子数组的最大可能元素和。
子数组是数组中的一个连续数字序列。
已知子数组 [numsl, numsl+1, …, numsr-1, numsr] ,若对所有 i(l <= i < r),numsi < numsi+1 都成立,则称这一子数组为 升序 子数组。注意,大小为 1 的子数组也视作 升序 子数组。
思路:
简单题,按照题目要求来就好
代码:
class Solution {
public:
int maxAscendingSum(vector<int>& nums) {
int n = nums.size();
int maxN = 0;//记录最终的最大和
int sum = nums[0];//注意这里,因为下面i从1开始
for(int i = 1; i < n; i ++){//因为要出现前后两个值比较的情况,要舍一个前或尾
if(nums[i] > nums[i - 1]){
sum += nums[i];
}
else{
maxN = max(maxN,sum);
sum = nums[i];//如果进入这里,nums[i]会容易丢掉
}
}
maxN = max(maxN,sum);//防止出现最后一个元素导致sum>maxN的情况
return maxN;
}
};