문제
https://leetcode.com/problems/maximum-subarray/description/
입력
1 <= nums.length <= 105
-10^4 <= nums[i] <= 10^4
결과
ans: Int = 가장 큰 부분수열의 합
해석
누적합이 현재 값보다 작으면, 이전 누적합을 버리고 그렇지 않으면 계속 누적한다.
이 때 누적할 때마다 이전의 최대값과 계속 비교해서 저장한다.
코드
class Solution {
func maxSubArray(_ nums: [Int]) -> Int {
let len = nums.count
var currentMax = nums[0] // 누적합
var ans = nums[0] // 최종 결과
for i in 1..<len {
currentMax = max(nums[i], currentMax+nums[i]) // 누적합이 더 작으면 현재껄로 새로 시작
ans = max(currentMax, ans) // 최대값 갱신
}
return ans
}
}
'PS > LeetCode' 카테고리의 다른 글
Find Minimum in Rotated Sorted Array (0) | 2025.01.08 |
---|---|
Maximum Product Subarray (0) | 2025.01.08 |
Product of Array Except Self (0) | 2025.01.05 |
Best Time to Buy and Sell Stock (0) | 2025.01.05 |
Two Sum (0) | 2025.01.05 |