LeetCode53:Maximum Subarray
来源:互联网 发布:sql union 去重复 编辑:程序博客网 时间:2024/05/22 08:01
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
.
一:动态规划的解法
初始状态A[i]表示以小标i结尾的子数组的最大和和,
那么A[i+1]=max{A[i],0}+nums[i]
输出结果为max{A[i]}。
时间复杂度是O(n),空间复杂度是O(1)。
runtime:12ms。
class Solution {public: int maxSubArray(vector<int>& nums) { int length=nums.size(); int result=nums[0]; int current=nums[0]; for(int i=1;i<length;i++) { current=max(current,0)+nums[i]; if(current>result) result=current; } return result; }};
二:分治法
这道题还可以使用分治法来求解。
分治法的说明如下图:
时间复杂度是o(nlogn),空间复杂度是o(1)。
runtime:16ms
class Solution {public: int maxSubArray(vector<int>& nums) { return divide(nums,0,nums.size()-1); } int divide(vector<int> & nums,int left,int right) { if(left==right) return nums[left]; if(left>right) return numeric_limits<int>::min(); int mid=left+(right-left)/2; int sum=0; int leftMax=0; for(int i=mid-1;i>=left;i--) { sum+=nums[i]; leftMax=max(leftMax,sum); } sum=0; int rightMax=0; for(int i=mid+1;i<=right;i++) { sum+=nums[i]; rightMax=max(rightMax,sum); } int tmp=leftMax+rightMax+nums[mid]; return max(tmp,max(divide(nums,left,mid-1),divide(nums,mid+1,right))); }};
0 0
- LeetCode53:Maximum Subarray
- [Java]LeetCode53 Maximum Subarray
- Leetcode53 Maximum Subarray
- [leetcode53]Maximum Subarray
- LeetCode53. Maximum Subarray
- Leetcode53: Maximum Subarray
- LeetCode53. Maximum Subarray
- LeetCode53. Maximum Subarray题解
- leetcode53~Maximum Subarray
- leetcode53. Maximum Subarray
- LeetCode53 Maximum Subarray
- LeetCode53. Maximum Subarray
- LeetCode53. Maximum Subarray
- leetcode53. Maximum Subarray
- Leetcode53[easy]--Maximum Subarray
- LeetCode53——Maximum Subarray
- Leetcode53——Maximum Subarray
- leetcode53. Maximum Subarray (简单dp)
- typeof用法
- 伟大的程序猿是怎么样炼成的?
- 结构体简单排序-一级-二级
- Linux查看系统版本命令
- 楼市政策平稳 市场回暖将延续
- LeetCode53:Maximum Subarray
- 一个发送电子邮件的bash脚本
- iPhone版本检查
- hash_map原理及C++实现
- web.xml中load-on-startup的作用
- 程序员在周末学习的8个实用技术
- Object类
- OGG 12C Oracle to Mysql
- 统计数据库所有表的字段之和