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에 따라 라이센스가 부여됩니다.