# 【LeetCode】 53. Maximum Subarray ## Description > Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. > 給一個整數陣列nums,找到它所有的子陣列(至少要有一個數字)中,總和最大可以為多少。 ## Example: ``` Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. ``` ## Solution * 解法一:divide and conquer approach. * 解法二:解法一的遞迴直接化成iterator的寫法,拆成自己和自己前一個的最大值。 * 一開始沒看到至少要有一個數字,多打了幾段code反而是錯的... ### Code * 解法一: ```C++=1 //我還沒寫 ``` * 解法二: ```C++=1 class Solution { public: int maxSubArray(vector<int>& nums) { if(nums.size()==0)return 0; int ans=nums[0]; for(int i=1;i<nums.size();i++) { nums[i]=max(nums[i],nums[i]+nums[i-1]); ans = max(ans,nums[i]); } return ans; } }; ``` ###### tags: `LeetCode` `C++`