美文网首页
leetcode 剑指 Offer 42. 连续子数组的最大和

leetcode 剑指 Offer 42. 连续子数组的最大和

作者: Source_Chang | 来源:发表于2020-10-25 21:53 被阅读0次

    leetcode

    1,记录上一次的最大和
    C++:

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
    
            int maxSubArray = nums[0];
            int lastSubArray = maxSubArray;
            for ( int i = 1; i < nums.size(); ++i ) {
                
                if ( lastSubArray < 0 ) {
                    
                    lastSubArray = nums[i];
                    
                } else {
                    
                    lastSubArray += nums[i];
                }
                
                if ( lastSubArray > maxSubArray ) {
                    
                    maxSubArray = lastSubArray;
                }
            }
            
            return maxSubArray;
        }
    };
    

    2,maxSubArray = sum - minSum
    C++:

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
    
            int maxSubArray = nums[0];
            int minSum = min(maxSubArray, 0);
            int sum = maxSubArray;
            for ( int i = 1; i < nums.size(); ++i ) {
                
                sum += + nums[i];
                maxSubArray = max(maxSubArray, sum - minSum);
                minSum = min(minSum, sum);
            }
            
            return maxSubArray;
        }
    };
    

    相关文章

      网友评论

          本文标题:leetcode 剑指 Offer 42. 连续子数组的最大和

          本文链接:https://www.haomeiwen.com/subject/clqomktx.html