GenomicRangeQuery 100% Solution in Javascript
Question
My Solution
function solution(S, P, Q) { let prefixASum = []; let prefixCSum = []; let prefixGSum = []; let prefixTSum = []; let ASum = 0; let CSum = 0; let GSum = 0; let TSum = 0; let ans = []; for (let i = 0; i <= S.length; i++) { if (i > 0) { // prefix[0] = 0 switch (S[i-1]) { // prefix[1] = a0 case 'A': ASum++; break; case 'C': CSum++; break; case 'G': GSum++; break; case 'T': TSum++; break; } } prefixASum[i] = ASum; prefixCSum[i] = CSum; prefixGSum[i] = GSum; prefixTSum[i] = TSum; } for (let i = 0; i < P.length; i++) { if (prefixASum[Q[i]+1] - prefixASum[P[i]] > 0) { ans[i] = 1; } else if (prefixCSum[Q[i]+1] - prefixCSum[P[i]] > 0) { ans[i] = 2; } else if (prefixGSum[Q[i]+1] - prefixGSum[P[i]] > 0) { ans[i] = 3; } else { ans[i] = 4; } } return ans; }
Note
https://codility.com/media/train/3-PrefixSums.pdf