算法分析与设计丨第二周丨LeetCode(4)——Maximum Subarray(Easy)

来源:互联网 发布:十个国外.NET CMS 编辑:程序博客网 时间:2024/06/05 19:11

动态规划&分治法

题目链接:点击打开链接

这道题目要求子数组的最大和,用动态规划的方法会优美许多,而分治法的暂时没时间写,下次再补上。


动态规划:

易想到递推公式:局部最大和:max(curSum+i,i),如果当前子数列之和比遍历到的元素要小,那就取元素为局部最大和

   全局最大和:max(maxSum,curSum),将当前全局最大和与局部最大和进行比较

代码也可得出



class Solution {public:    int maxSubArray(vector<int>& nums) {        int curSum = 0,maxSum = INT_MIN;                for(int i : nums)        {            curSum = max(curSum + i , i);            maxSum = max(maxSum , curSum);        }                return maxSum;            }};


阅读全文
0 0
原创粉丝点击