p19 连续子序列的最大和( leetcode 53)

一:解题思路

这道题用动态规划的思想来做,可以将时间复杂度降低为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;
    }
}

猜你喜欢

转载自www.cnblogs.com/repinkply/p/12463339.html