美文网首页
【每日3题(2)】最大升序子数组和

【每日3题(2)】最大升序子数组和

作者: 程序员小2 | 来源:发表于2022-07-03 09:27 被阅读0次

    题目:

    给你一个正整数组成的数组 nums ,返回 nums 中一个 升序 子数组的最大可能元素和。

    子数组是数组中的一个连续数字序列。

    已知子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,若对所有 i(l <= i < r),numsi < numsi+1 都成立,则称这一子数组为 升序 子数组。注意,大小为 1 的子数组也视作 升序 子数组。

    示例 1:

    输入:nums = [10,20,30,5,10,50]
    输出:65
    解释:[5,10,50] 是元素和最大的升序子数组,最大元素和为 65 。
    示例 2:

    输入:nums = [10,20,30,40,50]
    输出:150
    解释:[10,20,30,40,50] 是元素和最大的升序子数组,最大元素和为 150 。
    示例 3:

    输入:nums = [12,17,15,13,10,11,12]
    输出:33
    解释:[10,11,12] 是元素和最大的升序子数组,最大元素和为 33 。
    示例 4:

    输入:nums = [100,10,1]
    输出:100

    提示:

    1 <= nums.length <= 100
    1 <= nums[i] <= 100

    思路:

    一次遍历, 记录升序的累加和及累加的最大值,如果发现不再升序,则重新计算累加和。

    java代码:

    class Solution {
        public int maxAscendingSum(int[] nums) {
            int sum = nums[0];
            int max = nums[0];
            for (int i = 1; i < nums.length; i++) {
                if(nums[i]>nums[i-1]) {
                    sum+=nums[i];
                }else {
                    sum = nums[i];
                }
                max = Math.max(max, sum);
            }
            return max;
        }
    }
    

    相关文章

      网友评论

          本文标题:【每日3题(2)】最大升序子数组和

          本文链接:https://www.haomeiwen.com/subject/ofravrtx.html