반응형
Divide And Conquer..
int removeDuplicates(vector<int>& nums) {
int length = 0;
if(nums.size()==1){
return 1;
}
if(nums.empty()){
return 0;
}
for(int i = 0; i < nums.size() - 1; i++){
if(nums[i] != nums[i+1]){
length += 1;
nums[length] = nums[i+1];
}
}
nums = vector<int>(nums.begin(), nums.begin()+length+1);
return length+1;
}
Collapse
https://leetcode.com/problems/maximum-subarray/
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;
}
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
반응형
'알고리즘_개념 및 문제풀이 ' 카테고리의 다른 글
카카오/코딩테스트 기출/추석트래픽/2018 Blind Recruitment 1차/cpp(C++)풀이 (0) | 2020.03.08 |
---|---|
리트코드(Leetcode)/Word_Ladder (0) | 2019.11.02 |
leetcode/plusone (0) | 2019.10.05 |
리트코드/Leetcode/부분수열의 최댓값 (0) | 2019.10.05 |
리트코드/leetcode/배열 중복 제거/remove-duplicates-from-sorted-array (0) | 2019.10.05 |