Max double slice sum

前端 未结 14 1203
后悔当初
后悔当初 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:16

    This is a Java 100/100 Solution: https://codility.com/demo/results/demoVUMMR9-JH3/

    class Solution {
        public int solution(int[] A) {        
            int[] maxStartingHere = new int[A.length];
            int[] maxEndingHere = new int[A.length];
            int maxSum = 0, len = A.length;
    
            for(int i = len - 2; i > 0; --i ) {            
                maxSum = Math.max(0, A[i] + maxSum);
                maxStartingHere[i] = maxSum;
            }
            maxSum = 0;
            for(int i = 1; i < len - 1; ++i ) {            
                maxSum = Math.max(0, A[i] + maxSum);
                maxEndingHere[i] = maxSum;
            }
            int maxDoubleSlice = 0;
    
            for(int i = 0; i < len - 2; ++i) {
                maxDoubleSlice = Math.max(maxDoubleSlice, maxEndingHere[i] + maxStartingHere[i+2]);
            }
    
            return maxDoubleSlice;
    
        }
    }
    

    You can find more information going to this Wikipedia link and in the Programming Pearls book.

提交回复
热议问题