MinAvgTwoSlice 100% Solution in Javascript
Question
My Solution
This is the most challenging one I've ever seen in codility (if you also start from Q1 to here), the trick is that any slices of arbitrary length can be broken into sub-slices of length 2 or 3. The proof is in the below link codesays.com
function solution(A) { let prefixSum = []; prefixSum[0] = 0; for (let i = 1; i <= A.length; i++) { prefixSum[i] = prefixSum[i-1] + A[i-1]; } let min = 10001; let startIndex = 0; // for slices with length 2 for (let i = 0; i < prefixSum.length-2; i++) { let avg2 = (prefixSum[i+2] - prefixSum[i])/2; if (min > avg2) { min = avg2; startIndex = i; // console.log(min+", "+startIndex); } } // for slices with length 3 for (let i = 0; i < prefixSum.length-3; i++) { let avg3 = (prefixSum[i+3] - prefixSum[i])/3; if (min > avg3) { min = avg3; startIndex = i; // console.log(min+", "+startIndex); } } return startIndex; }