leetcode 53 Maximum Subarray
给定一个整型数组,其中若干项和最大,求最大值。
思路:
1. 动态规划,子状态为走到 i 的最大和,dp[i] = max(dp[i - 1], 0) + a[i],如果前一项比0小,就抛弃了。
2. 求每一项的前n向和,再遍历,减去前面出现过的最小和,从中选出最大值即可。
都很简单,这里给出dp的代码。
int maxSubArray(vector<int>& nums) { if (nums.size() == 0) return 0; int ret = INT_MIN; int last = 0; for (int i = 0; i < nums.size(); ++i) { last = nums[i] + max(last, 0); ret = max(ret, last); } return ret; }
【本文章出自博客园willaty,转载请注明作者出处,误差欢迎指出~】