LintCode 43: Maximum Subarray III (최대 와 그룹 을 얻 을 수 있 도록, 출력 최대 와)
8195 단어 알고리즘
public class MaxSubArray {
public static int maxSubArray(int[] nums, int k) {
//
// , ,
// k , nums.length-1 k
// Math.max
// , , , i nums i
// , ? j, i !
// ?
// i
// i-1 ( , )
// , j ( )
int len = nums.length;
// , , 0
if (len < k) {
return 0;
}
// max[i][j] nums j i ,
int[][] realMax = new int[k + 1][len + 1];
// j , j , j
int[][] virtualMax = new int[k + 1][len + 1];
for (int i = 1; i <= k; i++) {
virtualMax[i][i - 1] = Integer.MIN_VALUE;
for (int j = i; j <= len; j++) {
// j (virtualMax ),
//
virtualMax[i][j] = Math.max(virtualMax[i][j - 1], realMax[i - 1][j - 1]) + nums[j - 1];
// i j virtualMax
// ,realMax j
realMax[i][j] = (i == j ? virtualMax[i][j] : Math.max(virtualMax[i][j], realMax[i][j - 1]));
}
}
return realMax[k][len];
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.