53.最大子数组和

题目来源:

leetcode题目,网址:53. 最大子数组和 - 力扣(LeetCode)

解题思路:

动态规划,假设以第 i 个元素为结尾的最大子数组和为 dp[i],则 dp[i]=max(dp[i-1]+nums[i],nums[i])。最后返回其中最大值即可。

解题代码:

复制代码
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int maxSum=nums[0];
        int pre=nums[0];
        for(int i=1;i<nums.size();i++){
            pre=max(pre+nums[i],nums[i]);
            maxSum=max(pre,maxSum);

        }
        return maxSum;
    }
};

总结:

官方题解给出了两种解法。第一种是动态规划。第二种是分治,分治法利用递归将原来的数组切割为一个一个的小数组,在小数组内获得问题的解,然后不断合并小数组,在此期间,根据小数组的信息得到大数组的相应信息。最后所有的小数组被合并为一个时,得到的数据即为所求。


相关推荐
the_nov32 分钟前
25.Reactor
linux·c++
神里流~霜灭1 小时前
数据结构:二叉树(三)·(重点)
c语言·数据结构·c++·算法·二叉树·红黑树·完全二叉树
luckyme_1 小时前
leetcode-代码随想录-哈希表-有效的字母异位词
算法·leetcode·散列表
小王努力学编程2 小时前
【Linux系统编程】进程概念,进程状态
linux·运维·服务器·c++
2401_853448232 小时前
C嘎嘎类里面的额函数
c语言·开发语言·c++
莫有杯子的龙潭峡谷2 小时前
4.4 代码随想录第三十五天打卡
c++·算法
luckyme_2 小时前
leetcode 代码随想录 数组-区间和
c++·算法·leetcode
wen__xvn2 小时前
每日一题洛谷P8664 [蓝桥杯 2018 省 A] 付账问题c++
c++·职场和发展·蓝桥杯
熬夜苦读学习2 小时前
Linux进程信号
linux·c++·算法
jyyyx的算法博客3 小时前
Leetcode 857 -- 贪心 | 数学
算法·leetcode·贪心·嗜血