[leetcode]53. Maximum Subarray
2017-11-05 18:14
411 查看
divide and conquer
题目:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.
思路:
子串与子序列:子串是指数组中连续的若干个元素。而子序列仅仅要求各元素的顺序与其在数组中一致,而没有连续的要求。对于一个元素数为n的数组,其含有2^n个子序列和n(n+1)/2个子串。
例如:一个字符串 awbcdewgh子串: awbc. awbcd awbcde ….很多个子串,但是都是连续在一起
子序列: abc . abcd abcde … 很多个子序列,但是子序列中的字符在字符串中不一定是连在一起的, 但是子序列一定是单调的, (即字符之间ASCII单调递增或单调递减)
动态规划
遍历整个数组,dp[i]记录以nums[i]为结尾的连续的数的段的和的最大值,即dp[i] = max(nums[i], dp[i-1]+nums[i])。然后用max记录dp[i]的最大值。class Solution { public: int maxSubArray(vector<int>& nums) { vector<int> dp(nums.size()); int m = nums[0]; dp[0] = nums[0]; for (int i = 1; i < nums.size(); i++) { dp[i] = max(nums[i], dp[i-1]+nums[i]); m = max(m, dp[i]); } return m; } };
相关文章推荐
- 【Leetcode题解】53. Maximum Subarray
- [Leetcode]53. Maximum Subarray
- leetcode_53. Maximum Subarray
- [LeetCode] 53. Maximum Subarray 最大子数组
- Leetcode:53. Maximum Subarray
- Leetcode 53. Maximum Subarray 贪心或动态规划
- leetcode 53. Maximum Subarray
- [LeetCode]--53. Maximum Subarray
- 【leetcode】53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray 题解
- 【LeetCode】53. Maximum Subarray
- [LeetCode] 53. Maximum Subarray
- [Leetcode] 53. Maximum Subarray 解题报告
- leetcode-53. Maximum Subarray
- Leetcode解题笔记 53. Maximum Subarray [Easy] 动态规划
- Leetcode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray