Max double slice sum

前端 未结 14 1173
后悔当初
后悔当初 2020-12-13 20:53

Recently, I tried to solve the Max Double Slice Sum problem in codility which is a variant of max slice problem. My Solution was to look for a slice that has maximum value w

14条回答
  •  庸人自扰
    2020-12-13 21:17

    Here is an alternative solution to the proposed by me before, more readable and understandable:

    int solution(vector & A){
    if(A.size() < 4 )
        return 0;
    int maxSum = 0;
    int sumLeft = 0;
    unordered_map leftSums;
    leftSums[0] = 0;
    for(int i = 2; i < A.size()-1; i++){
        sumLeft += A[i-1];
        if(sumLeft < 0)
            sumLeft = 0;
        leftSums[i-1] =  sumLeft;
    }
    
    int sumRight = 0;
    unordered_map rightSums;
    rightSums[A.size()-1] =  sumRight;
    for( int i = A.size() - 3; i >= 1; i--){
        sumRight += A[i+1];
        if(sumRight < 0)
            sumRight = 0;
        rightSums[i+1] = sumRight;
    }
    
    for(long i = 1; i < A.size() - 1; i++){
        if(leftSums[i-1] + rightSums[i+1] > maxSum)
            maxSum = leftSums[i-1] + rightSums[i+1];
    }
    return maxSum;
    

    }

提交回复
热议问题