53. Maximum Subarray (javascript)

Hong GilSeong·2021년 1월 23일
0

LeetCode

목록 보기
1/3

난이도 Easy 정답률 47%

간단히 설명해서 연속된 배열중에 가장큰 값을 반환하면 된다.

O(N)으로 풀이

다이나믹 프로그래밍에서 접근하기 쉬운 문제이다.

문제 접근을 Brute force로 하기 쉽다. 그렇게하면 2중포문을 돌려야 하기때문에 문제에서 O(N)을 만족하지 못 한다.

그렇다면 어떻게 접근 해야할까 카데인 알고리즘을 떠올려보자 잘 모른다면
https://www.youtube.com/watch?v=86CQq3pKSUw&t=404s&ab_channel=CSDojo
CSDojo 센세의 강의를 들어보자. (영어 모른다면 -> 자동자막 -> 설정 -> 자동번역 설정 -> 한국어)
Example 1:

Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.

Example 2:

Input: nums = [1]
Output: 1

Example 3:

Input: nums = [0]
Output: 0

Example 4:

Input: nums = [-1]
Output: -1
Example 5:

Input: nums = [-100000]
Output: -100000

풀이코드:

var maxSubArray = function(nums) {
    for (let i = 1; i < nums.length; i++) {
        nums[i] = Math.max(nums[i], nums[i] + nums[i - 1]);
    };
    return Math.max(...nums);
};
profile
알고리즘가지고놀때까지

0개의 댓글

관련 채용 정보