Problem Solving

[leetcode - C] Maximum Subarray

Dev_en 2022. 7. 16. 13:47

문제 설명

https://leetcode.com/problems/maximum-subarray/

 

Maximum Subarray - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

  • 난이도 - Medium

배열에서 연속된 수들 중 합이 가장 큰 조합을 찾는 문제


관련 개념

배열


접근 방법

패턴을 찾으면 구현은 어렵지 않은 문제.

배열의 요소를 앞에서부터 탐색하면서 현재 탐색하는 수를 Maximum Subarray에 포함할지 말지가 관건

이므로, (직전까지의 누적합+현재 수) 와 (현재 수)를 비교해서 둘 중 큰 수가 새로운 누적합이 됨.


답안 코드

Runtime: 174 ms (39.15%)
Memory Usage: 12.2 MB (75.56%)
int maxSubArray(int* nums, int numsSize){
    int sum=-10000;
    int max=-10000;
    
    for(int i=0; i<numsSize; i++){
        sum = sum+nums[i] < nums[i] ? nums[i] : sum + nums[i];
        max = max < sum ? sum : max;
    }
    
    return max;
}