LeetCode每日一题- day13

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;
    }
};

猜你喜欢

转载自blog.csdn.net/Nmj_World/article/details/127192026