Я выполняю GenomicRangeQuery [Ссылка на задачу]: https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/ и получаю сложность времени O (N * M).
Я не уверен, какая именно часть кода вызывает его.Сейчас я изучаю сложность времени, поэтому я приветствую любые конструктивные идеи.
Вот мое решение:
function solution(S, P, Q) {
const factors = {
A: 1,
C: 2,
G: 3,
T: 4
}
const A = S.split("")
const result = []
let prevRangeValues = {};
for(let i = 0; i < P.length; i++) {
const start = P[i]
const end = Q[i] + 1
if (prevRangeValues[`${start}-${end}`] === undefined) {
const section = A.slice(start, end)
prevRange = [start, end]
const smallest = Array.from(new Set(section))
.sort()[0]
result.push(factors[smallest])
prevRangeValues[`${start}-${end}`] = factors[smallest]
} else {
result.push(result[result.length - 1])
}
}
return result
}