[Leetcode53]最大子序和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

记得很早之前在书上看过类似的题目,所以看到这道题第一个想法就是在线学习,一个数字一个数字的读并且比较,时间开销很小复杂度很低。

python:

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        if n == 0 :
            return None
        maxNum = nums[0]
        sumNums = maxNum
        for i in range(1,n):
            if sumNums < 0:
                sumNums = 0
            sumNums += nums[i]
            if sumNums > maxNum:
                maxNum = sumNums
        return maxNum

C++: 

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

猜你喜欢

转载自blog.csdn.net/qq_40501689/article/details/82925113
今日推荐