Leetcode 53번 문제는 주어진 array에서 주어진 값을 더했을때 가장 합이 큰 subarray를 찾는 문제이다.
#Brute Force 풀이
class Solution {
public int maxSubArray(int[] nums) {
int max = nums[0];
for(int i=0; i<nums.length;i++){
int sum = 0;
for(int j=i; j<nums.length;j++){
sum += nums[j];
max = Math.max(max, sum); //if(sum >= max){max = sum;} 와 같음
}
}
return max;
}
}
#Kadane's Algorithm (카데인 알고리즘) 풀이
class Solution {
public int maxSubArray(int[] nums) {
int maxSoFar=nums[0], maxEndingHere=nums[0];
for (int i=1;i<nums.length;++i){
maxEndingHere= Math.max(maxEndingHere+nums[i],nums[i]);
maxSoFar=Math.max(maxSoFar, maxEndingHere);
}
return maxSoFar;
}
}
#Sliding Window Technique 풀이
class Solution {
public int maxSubArray(int[] nums) {
int i = 0, j = 1;
int sum = 0, max = Integer.MIN_VALUE;
while(j <= nums.length){
sum += nums[j-1];
max = Math.max(sum, max);
if(sum <= 0){
i = j;
sum = 0;
}
j++;
}
return max;
}
}
'LeetCode > Array' 카테고리의 다른 글
[Medium] 238. Product of Array Except Self (애플 코딩 테스트 문제) (0) | 2022.09.08 |
---|---|
[Medium] 39. Combination Sum (0) | 2022.09.06 |
[Easy] 35. Search Insert Position (0) | 2022.09.01 |
[Easy]1672. Richest Customer Wealth (0) | 2022.08.27 |
[Easy] 1. Two Sum (0) | 2022.08.22 |