Skip to content

Instantly share code, notes, and snippets.

View vitkarpov's full-sized avatar

Viktor Karpov vitkarpov

View GitHub Profile
@vitkarpov
vitkarpov / craking-the-coding-interview-1-1.js
Last active February 25, 2017 13:02
"Cracking the coding interview", strings 1.1
/**
* Определяет все ли символы в строке
* встречаются по одному разу.
*
* @param {string} str
* @returns {boolean}
*/
function isUniqueChars(str) {
// Строка из набора символов ASCII,
// поэтому максимальная длина строки 128
@vitkarpov
vitkarpov / cracking-the-coding-interview-1-1-2.js
Created February 25, 2017 13:40
"Cracking the coding interview", strings 1.1.2
/**
* Определяет все ли символы в строке
* встречаются по одному разу.
* Подходит только для алфавита с количеством
* символов не более 32. В данном случае, a-z в нижнем регистре.
*
* @param {string} str
* @returns {boolean}
*/
function isUniqueChars(str) {
@vitkarpov
vitkarpov / cracking-the-coding-interview-1-2-1.js
Created February 26, 2017 11:34
"Cracking the coding interview", strings 1.2.1
/**
* Определяет является ли одна строка перестановкой другой.
*
* @param {string} a
* @param {string} b
* @returns {boolean}
*/
function isPermutation(a, b) {
return a.split('').sort().join('') === b.split('').sort().join('');
}
@vitkarpov
vitkarpov / cracking-the-coding-interview-1-2-2.js
Created February 26, 2017 11:58
"Cracking the coding interview", strings 1.2.2
/**
* Определяет является ли одна строка перестановкой другой.
* Используются счетчики символов. Сложность O(n).
*
* @param {string} a
* @param {string} b
* @returns {boolean}
*/
function isPermutation(a, b) {
// ASCII
@vitkarpov
vitkarpov / cracking-the-coding-interview-1.3.js
Last active February 28, 2017 21:01
"Cracking the coding interview", strings 1.3
/**
* Заменяет пробелы на %20.
* Выполняет замену «на месте».
*
* @param {string} str
* @returns {string}
*/
function replaceSpaces(str) {
str = str.split('');
@vitkarpov
vitkarpov / cracking-the-coding-interview-2-1-1.js
Created March 2, 2017 18:39
"Cracking the coding interview". Linked lists, 1.1
/**
* Удаляет дубликаты из связаного списка.
* Функция принимает на вход указатель на начало списка.
*
* @param {Node} head
* @returns {Node}
*/
function removeNode(head) {
// Предполагается, что head объект вида { data: <*>, next: <Node> }
const hash = {};
@vitkarpov
vitkarpov / cracking-the-coding-interview-2-1-2.js
Created March 2, 2017 18:46
"Cracking the coding interview". Linked list, 2.1.2
/**
* Удаляет дубликаты из связаного списка.
* Не использует дополнительную память.
* Функция принимает на вход указатель на начало списка.
*
* @param {Node} head
* @returns {Node}
*/
function removeNode(head) {
// Предполагается, что head объект вида { data: <*>, next: <Node> }
@vitkarpov
vitkarpov / cracking-the-coding-interview-2-2-1.js
Created March 4, 2017 12:58
"Cracking the coding interview". Linked lists, 2.2.1
/**
* Возвращает k-й элемент с конца списка.
* Принимает ссылку на начало спиcка, номер элемента,
* а так же специальный объект-хранилище, который нужен
* чтобы вернуть ссылку на нужный элемент списка.
*
* @example
* const store = [];
* getKthElementToLast(head, 3, store);
* const theThirdElement = store.pop();
@vitkarpov
vitkarpov / cracking-the-coding-interview-2-2-2.js
Created March 4, 2017 13:07
"Cracking the coding interview". Linked List, 2.2.2
/**
* Возвращает k-й элемент с конца списка.
* Реализует метод «двух указателей».
*
* @param {Node} head
* @param {Numner} k
* @returns {?Node}
*/
function getKthElementToLast(head, k) {
let p1 = head;
@vitkarpov
vitkarpov / cracking-the-coding-interview-3-2.js
Last active March 5, 2017 13:21
"Cracking the coding interview", Stacks and Queues, 3.2
/**
* Стек, который реализует метод min,
* кроме стандартный push и pop
*
* @example
* const s = new Stack();
* s.push(5);
* // 5
* console.log(s.min());
* s.push(6);