General statistics
List of Youtube channels
Youtube commenter search
Distinguished comments
About
Человек с Топором
Владилен Минин
comments
Comments by "Человек с Топором" (@user-tr8xi3ik3c) on "Владилен Минин" channel.
Previous
1
Next
...
All
О, качественная годнота! Благодарю за проделанный труд и за то, что делишься знаниями!
25
Вариант первой задачки с линейной сложностью Алгоритма O(n), можно через Set или Map примерно также решить. function isUnique(string) { const detect = {}; for (let i = 0; i < string.length; i++) { if (detect[string[i]]) return false; detect[string[i]] = true; } return true }
5
Обожаю подобное!
3
Вот три решения третьей задачи: function removeDupes(str) { return [...new Set(str)].join(''); } // ============================================== function removeDupes(str) { return Object.keys([...str].reduce((obj, el) => { obj[el] = el; return obj; }, {})).join(''); } // ============================================= function removeDupes(str) { let result = ''; const detect = {}; for (let i = 0; i < str.length; i++) { if (detect[str[i]]) { continue; } else { detect[str[i]] = true; result += str[i]; } } return result; } console.log(removeDupes('abcd')) // -> 'abcd' console.log(removeDupes('aabbccdd')) // -> 'abcd' console.log(removeDupes('abcddbca')) // -> 'abcd' console.log(removeDupes('abababcdcdcd')) // -> 'abcd'
2
Ты красавчик. Очень понятно объяснил, прям на пальцах.
2
Объект Set ищет элемент с временной сложностью O(1), все равно что доставать или удалить элемент по индексу: new Set ().has(7) - Временная сложность O(1)
2
Вот два варианта решения четвертой задачи: function highestFrequency(array) { return Object.entries(array.reduce((obj, str) => { obj[str] ? obj[str] += 1 : obj[str] = 1; return obj; }, {})).reduce((obj, el) => { if(el[1] > obj['detect']) { obj['detect'] = el[1]; obj['result'] = el[0]; } return obj; }, {'detect': 0})['result']; } // ==================================================================== function highestFrequency(array) { const collection = {}; for (let i = 0; i < array.length; i++) { collection[array[i]] ? collection[array[i]] += 1 : collection[array[i]] = 1; } let detect = 0, result; for (key in collection) { if (collection[key] > detect) { detect = collection[key]; result = key; } } return result; }
2
Вот решение второй задачки в одну строку (долбанутое решение) и еще два адекватных: Плохое решение: function flatten(array) { return [...array.reduce((acc, el) => Array.isArray(el) ? acc + flatten(el) : acc + el, '')].filter((el) => el !== ',').map((el) => +el); } // =========================================================== Хорошее: function flatten(array) { return array.flat(Infinity) } //============================================================ Тоже хорошее императивное: function flatten(array) { const result = []; function flating(arr) { for (let i = 0; i < arr.length; i++) { Array.isArray(arr[i]) ? flating(arr[i]) : result.push(arr[i]); } } flating(array); return result; }
2
@ВладимирДогуро-р5р , Кстати, а ведь в jsx и в правду, что-то есть. Напоминает шаблонизатор erb в Ruby on Rails, только еще более читаемый. К примеру тот же Go вместо обработки исключений использует паники, которые таки и пишутся в самом коде. В итоге кому то это не нравится, а кто-то на оборот говорит, что код становится более контролируемым и читаемым. Как говорится дело вкуса и привычки.
2
@demimurych1 , то есть строгое сравнение в JS работает точно также как и в языке Ruby )) Спасибо, я догадывался.
1
@demimurych1 , Большое спасибо за ценную и очень редкую информацию. Я записал себе это в памятку.
1
Previous
1
Next
...
All