leetcode-53. Maximum Subarray
2017-05-14 09:36
330 查看
https://leetcode.com/problems/maximum-subarray/#/description
问题描述:给定一个序列,求最长子串使其和最大。
思路解析:两种方法。一种就是常规,另一种DP,当指针i指向该元素值时,将该元素之前的和保存在数组中,然后判断,dp[i-1]是否小于0,若小于0,则将将其逻辑上重置0,加nums[i],如下:
dp[i]=nums[i]+(dp[i-1]>0?dp[i-1]:0);
代码如下:
另一种常规解法:
问题描述:给定一个序列,求最长子串使其和最大。
思路解析:两种方法。一种就是常规,另一种DP,当指针i指向该元素值时,将该元素之前的和保存在数组中,然后判断,dp[i-1]是否小于0,若小于0,则将将其逻辑上重置0,加nums[i],如下:
dp[i]=nums[i]+(dp[i-1]>0?dp[i-1]:0);
代码如下:
public class Solution { public int maxSubArray(int[] nums) { int[] dp=new int[nums.length]; dp[0]=nums[0]; int max=dp[0]; for(int i=1;i<nums.length;i++) { dp[i]=nums[i]+(dp[i-1]>0?dp[i-1]:0); max=Math.max(max,dp[i]); } return max; } }
另一种常规解法:
public class Solution { public int maxSubArray(int[] nums) { int max=Integer.MIN_VALUE; int sum=0; for(int i=0;i<nums.length;i++) { if(sum<0) { sum=nums[i]; }else { sum+=nums[i]; } if(sum>max) { max=sum; } } return max; } }
相关文章推荐
- leetcode 53. Maximum Subarray
- LeetCode 53. Maximum Subarray 题解
- [leetcode]53. Maximum Subarray 最大连续子串python实现【medium】
- LeetCode||53. Maximum Subarray
- [LeetCode] 53. Maximum Subarray 最大子数组
- LeetCode 53. Maximum Subarray
- [Leetcode] 53. Maximum Subarray 解题报告
- [LeetCode]53. Maximum Subarray
- [LeetCode] Algorithms-53. Maximum Subarray
- LeetCode 53. Maximum Subarray
- leetcode_53. Maximum Subarray
- [勇者闯LeetCode] 53. Maximum Subarray
- [LeetCode]53. Maximum Subarray
- 【LeetCode】53. Maximum Subarray
- 【leetcode】53. Maximum Subarray
- 【leetcode】53. Maximum Subarray
- leetcode 53. Maximum Subarray
- leetcode 53. Maximum Subarray-最大子数组|动态规划
- 53. Maximum Subarray LeetCode
- Leetcode 53. Maximum Subarray