Leetcode(53) 最大子序和
阿新 • • 發佈:2018-11-27
題目描述
給定一個整數陣列 nums ,找到一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。
解題思路
該題是讓求解最大和的連續子陣列,而且是個陣列的話,一般就肯定是有迴圈的,本題提示說最好是O(n)的複雜度,所以應該只有一層迴圈就可以搞定。
最大和的連續子陣列,可以確定的一點就是,這個子陣列肯定是以正數開頭,正數結尾的,所以只需要設定一個判斷,判斷每個正數開頭,正數結尾的陣列是否比前一個大就ok了啊
程式碼如下
class Solution { public: int maxSubArray(vector<int>& nums) { int return_max=nums[0]; int num=0; for(int i=0;i<nums.size();i++) { if(num>0) num+=nums[i]; else num=nums[i]; return_max=num>return_max?num:return_max; } return return_max; } };