Maximum SubArray
Updated:
기본적인 DP문제이다. 다시한번 생각을 해보지만
dp[i] : i를 끝으로 했을때 최대 부분배열의 합이라고 정의하자
그러면 dp[i-1]과 arr[i]를 더한것이 정의에 맞을수 있다.
그러나 dp[i-1]이 음수이게 되면, 오히려 값이 줄어들게 되므로, 0과 비교를 해서 항상 양수가 될때만을 더해줘야 한다는 예외처리를 해줘야한다
by Java
class Solution {
public int maxSubArray(int[] nums) {
int ans = 0;
int[] dp = new int[nums.length];
dp[0]=nums[0];
ans = dp[0];
for(int i=1;i<nums.length;i++) {
dp[i]= Math.max(0,dp[i-1])+nums[i];
ans = Math.max(ans,dp[i]);
}
return ans;
}
}
Leave a comment