Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
반응형
문제
https://leetcode.com/problems/maximum-subarray/
풀이
난이도: Easy
부분배열[start, end]의 시작을 start, 끝을 end라고 하자.
end를 +1씩 증가시켜 원소를 하나씩 부분 배열에 추가시킬때 사실 end가 음수의 값이더라도,
부분배열의 합(sum)이 여전히 양수라면 해당 음수는 부분 배열에 추가시켜 이어나갈 가치가 있다.
하지만 해당 음수가 추가되어 sum이 음수가 된다면 더 이상 [start, end]의 부분 배열은 이어나갈 팔요가 없다.
따라서 sum이 음수일때는 sum은 0으로 초기화 시켜주자.
이는 end의 다음 수부터 새로운 부분 배열을 시작한다는 의미와 같다.
배열을 한번만 순회해도 최대 부분 배열을 구할 수 있으므로 시간 복잡도는 O(n) 이다.
코드
반응형
'알고리즘 공부 > LeetCode' 카테고리의 다른 글
[LeetCode] 153. Find Minimum in Rotated Sorted Array (C++) (0) | 2021.10.11 |
---|---|
[LeetCode] 152. Maximum Product Subarray (C++) (0) | 2021.10.09 |
[LeetCode] 238. Product of Array Except Self (C++) (0) | 2021.10.03 |
[LeetCode] 121. Best Time to But and Sell Stock (C++) (0) | 2021.10.03 |
[LeetCode] 1. Two Sum (C++) (0) | 2021.10.02 |
댓글