LeetCode 53.最大子数组和(dp)

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组

是数组中的一个连续部分。

示例 1:

复制代码
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

复制代码
输入:nums = [1]
输出:1

示例 3:

复制代码
输入:nums = [5,4,-1,7,8]
输出:23

这道题是一道动态规划,我们通过比较nums【i】与dp【i-1】+ nums【i】来判断这个位置的最大值,代码如下:

cpp 复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int n = nums.size(),ans = -10005;
        if(n == 1) return nums[0];
        vector<int> dp(n,0);
        dp[0] = nums[0];
        for(int i=1;i<n;i++){
            dp[i] = max(nums[i],dp[i-1]+nums[i]);
        }
        for(int i=0;i<n;i++){
            ans = max(dp[i],ans);
        }
        return ans;
    }
};

加油

相关推荐
wjykp1 分钟前
part4 反向传播算法(BP算法)
人工智能·算法·机器学习
AndrewHZ2 分钟前
【图像处理基石】图像处理领域还有哪些核心挑战与难题?
图像处理·人工智能·算法·计算机视觉·噪声·图像增强·画质增强
啊阿狸不会拉杆2 分钟前
《数字图像处理》实验8-图像识别与分类
图像处理·人工智能·算法·分类·数据挖掘·数字图像处理
Hard but lovely6 分钟前
linux: pthread库---posix线程创建使用接口&&状态
linux·开发语言·c++
月明长歌6 分钟前
【码道初阶】Leetcode138:随机链表的复制:用 HashMap 做深拷贝的标准解法
java·数据结构·算法·leetcode·链表·哈希算法
.简.简.单.单.9 分钟前
Design Patterns In Modern C++ 中文版翻译 第八章 组合
java·c++·设计模式
yyy(十一月限定版)15 分钟前
C语言——堆
c语言·开发语言·算法
喜欢吃燃面16 分钟前
算法竞赛中的数据结构:图
开发语言·数据结构·c++·学习·算法
哈市雪花18 分钟前
记录一次cmake无法正确使用vcpkg的问题
开发语言·c++
小李小李快乐不已23 分钟前
贪心算法理论基础
c++·算法·leetcode·贪心算法