по номеру p найти два элемента в массиве, произведение которых = P - PullRequest
6 голосов
/ 21 сентября 2010

Я ищу решение для:

Given a array and a number P , find two numbers in array whose product equals P.

Ищет решение лучше, чем O (n * 2). Я в порядке с использованием дополнительного пространства или другой структуры данных. Любая помощь ценится?

Ответы [ 11 ]

0 голосов
/ 21 сентября 2010

Вот мой снимок, он сравнивает любые факторы друг с другом только один раз

P <- The Number
theArray <- new array[theData]
factors <- new array[]
isFactor <- new map(init: false)
factorCount <- 0
i <- 0
while i is in theArray
    num <- theArray[i]
    if (isFactor[num])
        skip
    if num modulo P == 0
        isFactor[num] <- true
        j <- 0
        while j is in factors
            if factors[j] * num == P
                return (num, factors[j])
            j++
        factors.push(num)
        factorCount++
    i++
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...