Given an integer array nums, find the
subarray
with the largest sum, and return
its sum
.
Example 1:
Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: The subarray [4,-1,2,1] has the largest sum 6.
Example 2:
Input: nums = [1] Output: 1 Explanation: The subarray [1] has the largest sum 1.
Example 3:
Input: nums = [5,4,-1,7,8] Output: 23 Explanation: The subarray [5,4,-1,7,8] has the largest sum 23.
Constraints:
1 <= nums.length <= 105-104 <= nums[i] <= 104
์์ ์ ๊ทผ๋ฐฉ์์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ชปํ์๋ค.
๋ฐฐ์ด ์ฝ๋
class Solution {
func maxSubArray(_ nums: [Int]) -> Int {
guard !nums.isEmpty else { return 0 }
var currentSum = nums[0]
var maxSum = nums[0]
for i in 1..<nums.count {
currentSum = max(nums[i], currentSum + nums[i])
maxSum = max(currentSum, maxSum)
}
return maxSum
}
}
์ ๊ทผ ๋ฐฉ์
1. ํ์ฌ๊น์ง์ ํฉ์ ๋ํ๋ด๋, currentSum ๊ทธ๋ฆฌ๊ณ maxSum์ ๊ฐ๊ฐ nums[0]์ผ๋ก ์ด๊ธฐํ ํ๋ค.
2. ๋ฐฐ์ด ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
3. currentSum์ nums[i] ๊ทธ๋ฆฌ๊ณ currentSum+nums[i] ์ค์ ๋ ํฐ ๊ฐ์ ์ ์ฅํ๋ค.
4. maxSum์ currentSum๊ณผ maxSum ์ค์ ๋ ํฐ ๊ฐ์ ์ ์ฅํ๋ค.
5. ์ต์ข ์ ์ผ๋ก maxSum ๊ฐ์ return ํ๋ค.
์นด๋ฐ์ธ ์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์ ์ ์:
- ์ ์ ๋ฐฐ์ด์์ ์ฐ์๋ ๋ถ๋ถ ๋ฐฐ์ด ์ค ํฉ์ด ์ต๋์ธ ๊ฒ์ ์ฐพ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ํต์ฌ ์์ด๋์ด:
- ๋ฐฐ์ด์ ์ํํ๋ฉด์, ๊ฐ ์์น์์ ๋๋๋ ์ต๋ ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ์ ๊ณ์ฐํฉ๋๋ค.
- ์ด์ ๊น์ง์ ํฉ์ด ์์๋ผ๋ฉด ๋ฒ๋ฆฌ๊ณ ์๋ก ์์ํ๋ ๊ฒ์ด ์ ๋ฆฌํฉ๋๋ค.
- ๋ ๊ฐ์ง ์ฃผ์ ๋ณ์:
- currentSum: ํ์ฌ ์์น๊น์ง์ ์ต๋ ๋ถ๋ถ ๋ฐฐ์ด ํฉ
- maxSum: ์ ์ฒด ๋ฐฐ์ด์์ ๋ฐ๊ฒฌ๋ ์ต๋ ๋ถ๋ถ ๋ฐฐ์ด ํฉ
- ๋์ ํ๋ก๊ทธ๋๋ฐ ์ ๊ทผ:
- ๊ฐ ๋จ๊ณ์ ๊ฒฐ๊ณผ(ํ์ฌ๊น์ง์ ์ต๋ ํฉ)๋ฅผ ์ด์ฉํด ๋ค์ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ:
- ์ ์ฒด ๋ฌธ์ ์ ์ต์ ํด๋ ๋ถ๋ถ ๋ฌธ์ ์ ์ต์ ํด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ฐฐ์ด: [-2, 1, -3, 4, -1, 2, 1, -5, 4]
๋จ๊ณ ํ์ฌ ์์ currentSum maxSum ์ค๋ช
1 -2 -2 -2 ์์
2 1 1 1 1 > -2 + 1, ์๋ก ์์
3 -3 -2 1 1 + (-3) = -2
4 4 4 4 4 > -2 + 4, ์๋ก ์์
5 -1 3 4 4 + (-1) = 3
6 2 5 5 3 + 2 = 5
7 1 6 6 5 + 1 = 6
8 -5 1 6 6 + (-5) = 1
9 4 5 6 1 + 4 = 5
์ต์ข
๊ฒฐ๊ณผ: maxSum = 6
์ต๋ ๋ถ๋ถ ๋ฐฐ์ด: [4, -1, 2, 1]
'Algorithm > Leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋งค์ผ LeetCode ํ๊ธฐ | Maximum Product Subarray (0) | 2024.08.23 |
---|---|
๋งค์ผ LeetCode ํ๊ธฐ | 3Sums (0) | 2024.08.21 |
๋งค์ผ LeetCode ํ๊ธฐ | Number of 1 bits (0) | 2024.08.19 |
๋งค์ผ LeetCode ํ๊ธฐ | Sum of Two Integers (0) | 2024.08.18 |
๋งค์ผ LeetCode ํ๊ธฐ | Product of Array Except Self (0) | 2024.08.15 |