LeetCode-53. Maximum Subarray
2017-12-08 17:18
471 查看
Description:
Solution1 (C++):
Solution2 (C++):
算法分析:
这个题目要求的是连续序列的最大和。解法的思想非常有意思。其实我们就不断的累加nums[i],但是要注意我们不需要找到最长的子序列,只需要找到最大的和,所以首先最要紧的一个问题就是,一个集合,其子集自然有很多。但是题目解法计算了集合的和的集合不超过nums.siuze();那为什么能保证这最多nums.size()个集合的和就比剩下的(2的n次方-1-nums.size())个集合的和都大呢?我是这样想的:
对于集合中任意一个元素,在它面前的有两条路,一条是加入之前的连续子集,另一条是独立成新的子集。那么对于这两个集合,若要判断哪个集合的和大,自然要看前一个子集的和是否大于0.如果大于0,那么第一条路产生的新子集的和大;否则,第二条路产生的新子集的和大。那么通过这种方法判断就可以过滤掉计算很多不了要的子集的和。
那么在求和过程中,不断将sum与最大值ans比较,获得最终的最大值ans就是问题的解。
后面更新,其实可以参考解法二,代码写得更直观明白。其实解法一中:sum=max(sum,o);就相当于解法二中的:curMax = curMax>0? (curMax + x):x ;
程序分析:
程序编写比较简单,略。相关文章推荐
- LeetCode 53. Maximum Subarray
- [leetcode]53. Maximum Subarray 最大连续子串python实现【medium】
- [LeetCode] Algorithms-53. Maximum Subarray
- LeetCode||53. Maximum Subarray
- Leetcode 53. Maximum SubarrayJAVA语言
- LeetCode-Easy部分中标签为 Dynamic Programming(DP) 53. Maximum Subarray
- LeetCode53. 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