Все способы вернуть 3, если вы получаете 7 и наоборот - вопрос интервью - PullRequest
0 голосов
/ 28 ноября 2018

Это вопрос, который мне задавали в интервью:
Реализуйте функцию, которая получает целое число n и выполняет следующие действия:
1. если n равно 3 -> вернуть 7.
2.иначе, если n равно 7 -> вернуть 3.
3. в противном случае вернуть любое число, которое вам нравится (неопределенное поведение).

Также опишите, какова длительность выполнения и сложность пространства каждого способа.

Итак, сначала я дал тривиальный способ использования оператора if-else и сказал, что это O(1) сложность времени выполнения + пространства.Затем интервьюер сказал: «Что делать, если вы не можете использовать операторы if (в том числе переключатели и другие сходства операторов)?»

Поэтому я предложил использовать побитовые операции: return n^=4.Сказал, что это O(1) время выполнения + сложность пространства.Тогда интервьюер сказал: «Что делать, если вы не можете использовать побитовые операции?»

Поэтому я предложил использовать массив, подобный следующему:

int mem[8] = {-1, -1, -1, 7, -1, -1, -1, 3}; 
return mem[n];               

Сказал, что это O(1) время выполнения + сложность пространства, как бы это ни было неэффективно, если вместо этого у нас есть большие числа3 и 7.

Тогда интервьюер сказал: «Что делать, если вы не можете использовать массивы?»- и тут я застрял.

Кажется, есть четвертый путь ... есть предложения?

Ответы [ 4 ]

0 голосов
/ 28 ноября 2018

Еще один.(n + 4) % 8.

«Все пути», безусловно, бесконечны.

0 голосов
/ 28 ноября 2018

как насчет

def foo(n)
  return 10 - n
end


foo(3) => 7
foo(7) => 3
0 голосов
/ 28 ноября 2018

Четвертый способ:

def foo(n):
    return 10-n
  1. Для n = 7, foo (7) возвращает 10-7 = 3.
  2. Для n = 3, foo (3)возвращает 10-3 = 7.
  3. Для любого другого значения n я могу вернуть любое число, которое мне нравится, поэтому я возвращаю 10-n.

Итак, сложность времени: O(1) и сложность пространства: O(1).

Отказ от ответственности: я не интервьюер.: P

0 голосов
/ 28 ноября 2018

Как насчет этого

function myfunc(n) {
   return 21 / n
}

console.log(myfunc(7))
console.log(myfunc(3))

ОБНОВЛЕНИЕ: # 2 Решение

function myfunc(n) {
   return "37".replace(n, "")
}

console.log(myfunc(7))
console.log(myfunc(3))
...