---
title: 'LeetCode 53. Maximum Subarray'
disqus: hackmd
---
# 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.
A subarray is a contiguous part of an array.
## Example
Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
## Constraints
1 <= nums.length <= 10^5^
-10^4^ <= nums[i] <= 10^4^
## Answer
只看疊加值是否小於現值,若小於現值表示從現值開始重算就會變更大,故更新sum為現值,若大於現值就繼續疊加,且每次都判斷max。
```Cin=
//2022_03_29
int maxSubArray(int* nums, int numsSize){
int max = *nums, sum = *nums++;
for(int i = 1; i < numsSize; i++, nums++){
sum = sum > 0 ? sum + *nums : *nums;
max = max > sum ? max : sum;
}
return max;
}
```
## Link
https://leetcode.com/problems/maximum-subarray/
###### tags: `Leetcode`