53.最大子数组和

题目来源:

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

解题思路:

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

解题代码:

复制代码
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;
    }
};

总结:

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


相关推荐
梓䈑1 小时前
【算法题攻略】BFS 解决FloodFill 算法、最短路问题、多源BFS 和 拓扑排序
c++·算法·宽度优先
Adios7944 小时前
设置交集大小至少为2
数据结构·算法·leetcode
程序喵大人6 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
野生风长10 小时前
C++入门基础:从命名空间到引用与指针的全面解析
开发语言·c++
Escalating_xu12 小时前
C++可变参数模板与引用折叠精讲
开发语言·c++
程序猿乐锅12 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
云泽80812 小时前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio
fqbqrr13 小时前
2607d,C++细节比不上d
c++·d
^yi13 小时前
【C++】继承的那些事儿~
c++·继承·菱形继承·隐藏·final·继承原理·多继承的指针偏移
ShineWinsu15 小时前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket