leecode 解题总结:53. Maximum Subarray
2017-02-10 14:53
375 查看
#include <iostream> #include <stdio.h> #include <vector> using namespace std; /* 问题: 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. 分析: 最大连续子数组问题。可以用动态规划来做。 设dp[i]表示以元素A[i]结尾的最大连续子数组的和,则有 dp[i+1] = {A[i+1] ,if dp[i] < 0 {dp[i] + A[i] , else 最后返回dp数组中最大值即可 输入: 9 -2 1 -3 4 -1 2 1 -5 4 输出: 6 */ class Solution { public: int maxSubArray(vector<int>& nums) { if(nums.empty()) { return 0; } int size = nums.size(); vector<int> dp(size , 0); dp.at(0) = nums.at(0); int maxValue = dp.at(0) ; for(int i = 1 ; i < size ; i++) { if(dp.at(i-1) < 0) { dp.at(i) = nums.at(i); } else { dp.at(i) = dp.at(i-1) + nums.at(i); } if(dp.at(i) > maxValue) { maxValue = dp.at(i); } } return maxValue; } }; void process() { int num; int value; vector<int> nums; Solution solution; while(cin >> num) { nums.clear(); for(int i = 0 ; i < num ; i++) { cin >> value; nums.push_back(value); } int result = solution.maxSubArray(nums); cout << result << endl; } } int main(int argc , char* argv[]) { process(); getchar(); return 0; }
相关文章推荐
- leecode 解题总结:209. Minimum Size Subarray Sum
- leecode 解题总结:40 Combination Sum II
- leecode 解题总结:46. Permutations
- leecode 解题总结:24 Swap Nodes in Pairs
- leecode 解题总结:29 Divide Two Integers
- leecode 解题总结:28 Implement strStr()
- leecode 解题总结:41. First Missing Positive
- leecode 解题总结:35. Search Insert Position
- leecode 解题总结:21. Merge Two Sorted Lists
- leecode 解题总结:20. Valid Parentheses
- leecode 解题总结:32 Longest Valid Parentheses
- leecode 每日解题思路 152 Maximun Product Subarray
- leecode 解题总结:47. Permutations II
- leecode 解题总结:23 Merge k Sorted Lists
- leecode 解题总结:17. Letter Combinations of a Phone Number
- leecode 解题总结:45. Jump Game II
- leecode 解题总结:50. Pow(x, n)
- leecode 解题总结:15 3Sum
- leecode 解题总结:26 Remove Duplicates from Sorted Array
- leecode 解题总结:33. Search in Rotated Sorted Array