На прошлой неделе я писал о разговоре с младшим разработчиком, у которого возникли проблемы с интервью Amazon. На этой неделе я пишу об онлайн-тестировании Apple. Далее телефонное интервью!

Два вопроса, с которыми я столкнулся, неплохие и хороший способ попрактиковаться в ваших алгоритмах онлайн-оценки в крупных технических компаниях.

Вопрос 1:

Для массива, содержащего n различных чисел, взятых из 0, 1, 2, ..., n, найдите то, которое отсутствует в массиве.

Пример 1:

Input: [3,0,1]
Output: 2

Пример 2:

Input: [9,6,4,2,3,5,7,0,1]
Output: 8

Вопрос 2:

Последовательность «подсчитай и скажи» - это последовательность целых чисел, первые пять членов которой выглядят следующим образом:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 читается как "one 1" или 11.
11 читается как "two 1s" или 21.
21 читается как "one 2, затем one 1" или 1211.

Для заданного целого числа n, где 1 ≤ n ≤ 30, сгенерируйте n -й член последовательности «подсчитай и скажи». Вы можете сделать это рекурсивно, другими словами, предыдущий член считывает цифры, считая количество цифр в группах одной и той же цифры.

Примечание. Каждый член последовательности целых чисел будет представлен в виде строки.

Пример 1:

Input: 1
Output: "1"
Explanation: This is the base case.

Пример 2:

Input: 4
Output: "1211"
Explanation: For n = 3 the term was "21" in which we have two groups "2" and "1", "2" can be read as "12" which means frequency = 1 and value = 2, the same way "1" is read as "11", so the answer is the concatenation of "12" and "11" which is "1211".

Я перечислю первые 10 терминов, чтобы наглядно представить последовательность:

 1.     1
 2.     11
 3.     21
 4.     1211
 5.     111221
 6.     312211
 7.     13112221
 8.     1113213211
 9.     31131211131221
10.     13211311123113112211

Пожалуйста, попробуйте отправить ответы на этой неделе на JS. И, как всегда, после нескольких попыток / комментариев выложу свои решения проблем. Удачи, и я с нетерпением жду ваших ответов!