《七月集训》第二十八天 动态规划

Crazy_DM 2022-07-28 11:49:32

53.最大子数组和

解题思路:

1.一开始想使用一个数组记录当前位置能够取到的最大的连续子数组和,然后遍历数组得到其中的最大值。

2.后面发现当前位置取到的最大值只跟前一个元素取到的最大值有关,那么我们用一个数不断记录前面的最大值就好了。然后最大值跟每个位置取得最大值比较看看是否能够更新

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int n = nums.size();
        if(n == 1) return nums[0];

        int ans = nums[0];
        int ret = nums[0];
        for(int i = 1; i < n; ++i) {
            ans = max(nums[i] + ans, nums[i]); //遍历中不断记录从0到当前位置最大的连续子序列
            ret = max(ans, ret); //记录最大的ans
        }
        return ret;
    }
};

 

...全文
25 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
万人千题

6.2w+

社区成员

学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
帖子事件
创建了帖子
2022-07-28 11:49
社区公告

QQ群:480072171

英雄算法交流 8 群