Leetcode 53. Maximum SubarrayJAVA语言
2017-03-11 20:06
387 查看
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) { int len=nums.length; if(nums==null || len==0)return 0; int MAX=nums[0]; int curSum=nums[0]; for(int i=1;i<len;i++){ if(curSum>0){ curSum+=nums[i]; }else{ curSum=nums[i]; } MAX=Math.max(curSum,MAX); } return MAX; } }PS:第一种思路,逐渐累加循环。
还有一种思路,可以用动态规划做。
public class Solution { public int maxSubArray(int[] nums) { int len=nums.length; if(nums==null || len==0)return 0; //dp[i]代表以nums[i]为结尾的最大和。 int[] dp=new int[len]; dp[0]=nums[0]; int MAX=dp[0]; for(int i=1;i<len;i++){ if(dp[i-1]<0){ dp[i]=nums[i]; }else{ dp[i]=dp[i-1]+nums[i]; } MAX=Math.max(dp[i],MAX); } return MAX; } }
相关文章推荐
- (Java)LeetCode-53. Maximum Subarray
- Maximum Subarray leetcode java
- 【Leetcode】Maximum Subarray in JAVA
- [LeetCode]53. Maximum Subarray
- leetcode Add Digits java语言实现
- leetcode 53. Maximum Subarray
- leetcode JAVA Maximum Subarray 难度系数3 3.17
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- leetcode 53. Maximum Subarray
- LeetCode53. Maximum Subarray
- [leetcode] 53. Maximum Subarray
- LeetCode --- 53. Maximum Subarray
- Java for LeetCode 209 Minimum Size Subarray Sum
- Java for LeetCode 152 Maximum Product Subarray
- [LeetCode]53. Maximum Subarray
- 【LeetCode刷题Java版】Maximum Product Subarray
- Minimum Size Subarray Sum 【leetCode】Java
- 【leetcode】53. Maximum Subarray
- [Java语言] [Leetcode] Best Time to Buy and Sell Stock 买卖股票的最佳时机
- 【LeetCode】53. Maximum Subarray