[leetCode] Maximum Subarray
来源:互联网 发布:高清油画 知乎 编辑:程序博客网 时间:2024/05/22 23:58
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
.
最简单的o(1)空间复杂度的动态规划,但是还可以用分制做,当然,用分制做并不优秀,但是一个很新奇的点子:
方法一:dp
public class Solution { public int maxSubArray(int[] nums) { if(nums.length==0) return 0; int sum=nums[0]; int re=sum; for(int i=1;i<nums.length;i++){ if(sum<=0) sum=0; sum+=nums[i]; re=Math.max(re,sum); } return re; }}方法二:分制
public class Solution2 {//不是很好的做法 public int maxSubArray(int[] nums) { if(nums.length==0) return 0;return merge(nums,0,nums.length-1);}private int merge(int[] nums, int l, int r) {if(l==r) return nums[l];int mid=(l+r)/2;int leftRe=merge(nums,l,mid);int rightRe=merge(nums,mid+1,r);int left=Integer.MIN_VALUE,right=Integer.MIN_VALUE;int sum=0;for(int i=mid;i>=l;i--){ //注意细节 这里是从mid到l 不是到0sum+=nums[i];left=Math.max(sum,left);}sum=0;for(int i=mid+1;i<=r;i++){sum+=nums[i];right=Math.max(sum,right);}int re=left+right;return Math.max(re,Math.max(leftRe,rightRe));}}
阅读全文
1 0
- 【LeetCode】Maximum Subarray 和 Maximum Product Subarray
- LeetCode: Maximum Subarray
- LeetCode Maximum Subarray
- [Leetcode] Maximum Subarray
- LeetCode: Maximum Subarray
- leetcode 25: Maximum Subarray
- [LeetCode] Maximum Subarray
- [Leetcode] Maximum Subarray
- [LeetCode]Maximum Subarray
- [leetcode]Maximum Subarray
- LeetCode-Maximum Subarray
- [leetcode] Maximum Subarray
- LeetCode 45: Maximum Subarray
- LeetCode - Maximum Subarray
- LeetCode:Maximum Subarray
- LeetCode 53: Maximum Subarray
- 【leetcode】Maximum Subarray
- Leetcode Maximum Subarray
- fiddler抓包工具 iPhone手机 设置
- 欢迎使用CSDN-markdown编辑器
- scala基础之函数和闭包
- jenkins中Check-out Strategy
- 设计模式(9)-Proxy 代理模式
- [leetCode] Maximum Subarray
- 服务器如何用MS SQL Server 2005 Express做数据库
- 自定义注解Annotation
- 内核参数优化和PHP 安全设置
- 重拾CSDN
- spring mvc拦截问题jsp
- Java集合---HashSet的源码分析
- 卸载 oracle
- String a=new String(“abc”)的深奥