From 38de2caff8c71b7a8e358c80b7fb75cdb2cc2559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=A0=91=E6=A3=AE?= <14021051@buaa.edu.cn> Date: Sat, 1 Sep 2018 19:45:24 +0800 Subject: [PATCH] Create 53. Maximum Subarray.md --- 53. Maximum Subarray.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 53. Maximum Subarray.md diff --git a/53. Maximum Subarray.md b/53. Maximum Subarray.md new file mode 100644 index 0000000..4699cae --- /dev/null +++ b/53. Maximum Subarray.md @@ -0,0 +1,22 @@ +# [53. Maximum Subarray](https://leetcode.com/problems/maximum-subarray/description/) +# 思路 +从前往后遍历一遍,用currsum记录以当前位置为结尾的最大子序列和。可见currsum要么等于nums[i]本身,要么等于nums[i]加上上一个currsum,即更新准则为: +如果currsum大于0,那么currsum += nums[i]; +否则currsum = nums[i] +# C++ +``` +class Solution { +public: + int maxSubArray(vector& nums) { + int maxsum = nums[0]; // at least one number + int currsum = nums[0]; + for(int i = 1; i < nums.size(); i++){ + if(currsum > 0) currsum += nums[i]; + else currsum = nums[i]; + + if(currsum > maxsum) maxsum = currsum; + } + return maxsum; + } +}; +```