53. 最大子序和
class Solution { public: int maxSubArray(vector<int>& nums) { int before_addtion = 0; int cur_addtion = 0; int max = INT_MIN; for(int i = 0; i < nums.size(); i++) { if(before_addtion < 0) { before_addtion = 0; } cur_addtion = before_addtion + nums[i]; if(cur_addtion > max) { max = cur_addtion; } before_addtion = cur_addtion; } return max; } };
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
解:贪心算法,每次发现之前之前和是负的,就抛弃之。随时记录max。
class Solution { public: int maxSubArray(vector<int>& nums) { int before_addtion = 0; int cur_addtion = 0; int max_addtion = INT_MIN; for(int i =0; i < nums.size(); i++) { before_addtion = max(before_addtion + nums[i], nums[i]); max_addtion = max(max_addtion, before_addtion); } return max_addtion; } };
解:动态规划。
浙公网安备 33010602011771号