Leetcode解题笔记 53. Maximum Subarray [Easy] 动态规划
2017-12-05 19:59
666 查看
解题思路
如果用简单的解法,那只需要遍历两次,时间复杂度取O(N^2)即可,但如果想将时间复杂度降低到线性,那需要用到动态规划的方法。具体看算法解释部分算法解释
设preSub[i]为在indexi前(包括字符i)的连续子串最大和,则preSub[i] = max{preSub[i - 1] + nums[i], nums[i]}, preSub[nums.size() - 1]即为所求。
代码
class Solution { public: const int MAX_N = 1000; int maxSubArray(vector<int>& nums) { int maxSub = nums[0]; int preSub = nums[0]; for (int i = 1; i < nums.size(); i++) { if (preSub + nums[i] >= 0) { preSub = max(preSub + nums[i], nums[i]); maxSub = max(preSub, maxSub); } else { preSub = nums[i]; maxSub = max(preSub, maxSub); } } return maxSub; } };
相关文章推荐
- Leetcode解题笔记121. Best Time to Buy and Sell Stock [Easy] 动态规划
- Leetcode解题笔记 70. Climbing Stairs [Easy] 动态规划
- Leetcode 53. Maximum Subarray 贪心或动态规划
- LeetCode53. Maximum Subarray 动态规划和分治法
- [leetCode]53. Maximum Subarray&&动态规划
- LeetCode-Easy部分中标签为 Dynamic Programming(DP) 53. Maximum Subarray
- LeetCode53. Maximum Subarray-python(easy) DP思想
- Leetcode解题笔记 9.Palindrome Number [Easy]
- leetcode 53. Maximum Subarray-最大子数组|动态规划
- 菜鸟写给菜鸟的 ——LeetCode解题笔记 Easy-题目1:292. Nim Game
- 小白笔记-----------------------------leetcode53. Maximum Subarray
- [leetcode] 53. Maximum Subarray 解题报告
- Leetcode解题笔记 62. Unique Paths [Medium] 动态规划
- Leetcode解题笔记 63. Unique Paths II [Medium] 动态规划
- Leetcode解题笔记 1.Two Sum [Easy]
- [array] leetcode - 53. Maximum Subarray - Easy
- LeetCode解题报告 53. Maximum Subarray [medium]
- leetcode解题报告:53. Maximum Subarray
- [LeetCode] 53. Maximum Subarray 解题思路
- Leetcode解题笔记 7.Reverse Integer [Easy]