53. Maximum Subarray
来源:互联网 发布:知乎 家族显赫 编辑:程序博客网 时间:2024/06/07 18:22
求数组中连续最大子序列的和
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
.
public class Solution { public int maxSubArray(int[] nums) { //分而治之的思想 return maxSubArray(nums,0,nums.length-1); } public int maxSubArray(int[] A,int start,int end){ //如果开始大于结束,就返回Integer.MIN_VALUE; if(start>end)return Integer.MIN_VALUE; //mid即为中间元素。 int mid=(start+end)/2; //得到左边最大值 int leftMax=maxSubArray(A,start,mid-1); //得到右边最大值 int rightMax=maxSubArray(A,mid+1,end); int lMaxSum=0; int sum=0; //对每个子序列做左边求和 for(int i=mid-1;i>=start;i--){ sum+=A[i]; lMaxSum=Math.max(sum,lMaxSum); } int rMaxSum=0; sum=0; //对每个子序列做右边求和 for(int i=mid+1;i<=end;i++){ sum+=A[i]; rMaxSum=Math.max(rMaxSum,sum); } //比较左边最大、右边最大和包括中间元素的最大的连续序列 return Math.max(lMaxSum+A[mid]+rMaxSum,Math.max(leftMax,rightMax)); }}解法2:
采用最优连续序列化值保存方法。
public class Solution { public int maxSubArray(int[] nums) { //从第一位计算,假设目前最大和是第一个数。 int far_now_max=nums[0],mostRealMax=nums[0]; //遍历序列,从第二个元素开始遍历, for(int i=1;i<nums.length;i++){ //far_now_max记录到达i连续序列和,与最近一个nums[i]比较,始终记录已有序列的最大和。 far_now_max=Math.max(far_now_max+nums[i],nums[i]); //将每次nums[i]结束的序列和与mostRealMax比较,如果比mostRealMax值大,就更新mostRealMax的值。 mostRealMax=Math.max(far_now_max,mostRealMax); } return mostRealMax; }}
阅读全文
0 0
- [LeetCode]53.Maximum Subarray
- LeetCode --- 53. Maximum Subarray
- 53.Maximum Subarray
- [Leetcode] 53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 53.Maximum Subarray
- 53. Maximum Subarray
- 【leetcode】53. Maximum Subarray
- [leetcode] 53.Maximum Subarray
- 【leetcode】53. Maximum Subarray
- 53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- 53. Maximum Subarray
- [LeetCode]53. Maximum Subarray
- 53. Maximum Subarray LeetCode
- 53. Maximum Subarray
- [LeetCode]53. Maximum Subarray
- 53. Maximum Subarray
- Java集合框架
- Java 连接active mq
- 上传文件
- poj3669(bfs)
- 计蒜客 管家的忠诚 线段树
- 53. Maximum Subarray
- poj-1330-Nearest Common Ancestors-LCA(RMQ)
- excel模板文件下载
- C#生成验证码
- cnpm 安装 mark
- 验证码
- Java知识(static修饰符和fina修饰符l)
- Tendermint: 共识概览
- ECMAScript 6 入门