-
[Algorithm] LeetCode 53. Maximum SubarrayAlgorithm 2023. 10. 12. 00:32반응형
53. Maximum Subarray
Medium
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
Follow up: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
Solution:
class Solution { public int maxSubArray(int[] nums) { int n = nums.length; int currentMax = nums[0]; int globalMax = currentMax; if (n == 1) return currentMax; for (int i = 1; i < n; i++) { currentMax = Math.max(currentMax + nums[i], nums[i]); globalMax = Math.max(currentMax, globalMax); } return globalMax; } }
전형적인 카데인 알고리즘(Kadane's Algorithm) 문제이다.
반응형'Algorithm' 카테고리의 다른 글
[Algorithm] LeetCode 238.product-of-array-except-self (0) 2023.10.10 [Algorithm] LeetCode 217.contains-duplicate (0) 2023.10.10 [Algorithm] LeetCode 121. Best Time to Buy and Sell Stock (0) 2023.09.30 [LeetCode] 추천 75 문제 및 알고리즘 공부 방법 (0) 2023.09.30 [Algorithm] LeetCode 7. Reverse Integer (0) 2023.09.26