반응형
https://leetcode.com/problems/maximum-subarray
Maximum Subarray - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
Divide and Conquer / Time Complexity: O(nlogn)
int solution(vector<int> & nums, int l, int r){
if(l==r) return nums[l];
int m = (l+r)/2;
int left_sum = nums[m];
int sum = 0;
int right_sum = nums[m+1];
//left Max Sum
for(int i = m; i >= l; i--){
sum = sum + nums[i];
if(sum > left_sum){
left_sum = sum;
}
}
sum = 0;
//Right Max Sum
for(int j = m+1; j <= r; j++){
sum = sum + nums[j];
if(sum > right_sum){
right_sum = sum;
}
}
int crossMaxSum = max(max(left_sum + right_sum, left_sum),right_sum) ;
return max(max(crossMaxSum, solution(nums, l, m)), solution(nums, m+1, r));
}
int maxSubArray(vector<int>& nums) {
int r = nums.size()-1;
int l = 0;
if (r==0) return nums[0];
int answer = solution(nums, l, r);
return answer;
}
반응형
'알고리즘_개념 및 문제풀이 ' 카테고리의 다른 글
리트코드/leetcode/maxsubarray/부분최대합수열 (0) | 2019.10.05 |
---|---|
leetcode/plusone (0) | 2019.10.05 |
리트코드/leetcode/배열 중복 제거/remove-duplicates-from-sorted-array (0) | 2019.10.05 |
https://leetcode.com/problems/4sum/ (0) | 2019.09.28 |
Leetcode/count_primes/Hash/리트코드 (0) | 2019.09.28 |