【LeetCode】Maximum Subarray
2014-04-09 15:31
127 查看
参考链接
http://blog.csdn.net/magisu/article/details/14515209题目描述
Maximum Subarray
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.
click to show more practice.
More practice:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
题目分析
题目是意思是,找出一个子串,要求子串中数字之和最大。这是一个经典的动态规划的题目,需要了解以下规律。
max_subarray(A
) = max( max_subarray(A[n-1]), A
, max_subarray(A[n-1)(+)A
);
最大子串和是之前已经遍历过的数字中的最大值max_subarray(A[n-1]),当前值A
,和加上当前值max_subarray(A[n-1)(+)A
这三者之间的最大值。
代码示例
#include using namespace std; #if 1 class Solution { public: int maxSubArray(int A[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function int sum = A[0], max = A[0]; for (int i = 1; i < n; i++) { sum = sum < 0 ? A[i] : sum + A[i]; max = sum > max ? sum : max; } return max; } }; #elif 1//自己写的,数据大时就会出问题 class Solution { public: int maxSubArray(int A[], int n) { int *sum = new int ; for(int i = 0;i0;j--) { if(i>=j) { sum[j]=sum[j-1]+A[i]; if(sum[j] > max_sum) max_sum = sum[j]; } } sum[0] = A[i]; if(sum[0] > max_sum) max_sum = sum[0]; /* printf("%4d:",A[i]); for(int k = 0;k
推荐学习C++的资料
C++标准函数库http://download.csdn.net/detail/chinasnowwolf/7108919
在线C++API查询
http://www.cplusplus.com/
相关文章推荐
- LeetCode:Symmetric Tree
- Leetcode: Search for a Range
- LeetCode: Wildcard Matching [043]
- LeetCode 093 Restore IP Addresses
- LeetCode-Substring with Concatenation of All Words
- [leetcode 94] Binary Tree Inorder Traversal
- Leetcode--Median of Two Sorted Arrays
- 【JAVA、C++】LeetCode 002 Add Two Numbers
- LeetCode Implement Stack using Queues
- [Java]LeetCode53 Maximum Subarray
- [LeetCode] Clone Graph(!!!!graph&dfs&bfs)
- LeetCode -- Rotate List
- [LeetCode]题解(python):090-Subsets II
- LeetCode 51 - N-Queens II
- LeetCode 328. Odd Even Linked List
- leetcode Word Break
- leetcode ----Intersection of Two Arrays
- LeetCode----14. Longest Common Prefix
- Leetcode 456. 132 Pattern 123模式 解题报告
- 【LeetCode】 059. Spiral Matrix II