Leetcode 53 -- 最大子序和

題目鏈接:Leetcode 53

描述一下題目:

給定一個數組,找到具有最大和的子連續數組,返回最大和。


解題思路:

在Mooc上面 浙江大學數據結構裏提到過這一題,這題跟那一題不一樣的地方在於,如果最大和是負數,mooc上是返回0,這裏是仍然返回負數。

我們o(n)複雜度的算法是遍歷數組,依次相加,當sum<0捨棄前面所有元素。因爲前面sum<0,與後一個數相加反而使後面一個數字變小了,如此循環找出最大子序和。


實現代碼:(C++)

/*******************************************************************************
Copyright © 2018-20xx Qiao Chuncheng, All Rights Reserved.
File name:		053[最大子序和].cpp
Author:			Qiao Chuncheng
Version:		v1.0
Date:			2018-04-17
*******************************************************************************/

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章