一:解题思路
这道题用动态规划的思想来做,可以将时间复杂度降低为Time:O(n),空间复杂度为:O(1)
二:完整代码示例 (C++版和Java版)
C++版:
class Solution { public: int max(int a, int b) { return a>b?a:b; } int maxSubArray(vector<int>& nums) { int maxValue = -2147483648,cur=0; for (int i = 0; i < nums.size(); i++) { cur = cur <= 0 ? nums[i] : (nums[i]+cur); maxValue = max(maxValue,cur); } return maxValue; } };
Java版:
class Solution { public int maxSubArray(int[] nums) { int maxValue=Integer.MIN_VALUE; int cur=0; for(int i=0;i<nums.length;i++) { cur=cur<=0?nums[i]:(nums[i]+cur); maxValue=Math.max(maxValue,cur); } return maxValue; } }