Проблемы преодоления временной сложности в вызове GenomicRangeQuery Coditlity - PullRequest
0 голосов
/ 30 июня 2019

Я выполняю 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...