Front-end Science with Sergey Puzankov
Front-end Science with Sergey Puzankov
  • Видео 142
  • Просмотров 4 005 408
Для всех тех, кто пишет про 8 лет на Донбасе (цитата из видео Столицы мира)
Россияне! Разумные, адекватные и мыслящие россияне! Посмотрите это видео (мы взяли кусок из оригинального видео Анатолия Власова канал «Столица мира») и ОБЯЗАТЕЛЬНО ПЕРЕШЛИТЕ его вашим знакомым, соседям, родителям, бабушкам! И особенно тем, кто громче всех кричит про «8 лет на Донбасе»! Откройте им наконец глаза!
Мы лично знаем этих людей - коренных жителей Донецка. Это реальные люди, публичные, блогеры миллионники. Послушайте, что они говорят про то, кто и когда захватил Донецк, про обстрелы и прочее, свидетелями которых они лично были. Хватит прятать голову в песок и верить каждому дерьму, что вам толкает ваш президент!
Уже хватит!! Оглянитесь - ваша армия истребляет уже не 2 региона, а...
Просмотров: 473 770

Видео

The first interview of a self-taught frontender (30+). Solved more than 2000 problems on Codewars
Просмотров 146 тыс.2 года назад
Привет, друзья! Сегодняшнее собеседование будет в поддержку тем, кто свитчится после 30 лет из других сфер деятельности во фронтенд. Наш сегодняшний участник - Антон (32 года) долгое время работал SEO-оптимизатором, после чего решил попробовать себя в роли верстальщика. Хорошее, кстати, решение для тех, кто хочет как можно скорее начинать зарабатывать в новой профессии. На сейчас он проработал ...
Merge intervals - task from JS interview | Solving LeetCode problems
Просмотров 46 тыс.2 года назад
Привет, друзья! Продолжаем решать задачи с javascript собеседований. Сегодня у нас очень популярная задача про объединение интервалов (56. Merge Intervals). Это очень практическая задача, так как она часто встречается в электронных календарях. На LeetCode эта задача помечена средним уровнем сложности: leetcode.com/problems/merge-intervals/ Условия задачи следующие: на вход подается массив интер...
Linked List. Data Structures | Implementation in JS
Просмотров 30 тыс.2 года назад
Привет, друзья. Вы давно просили рассказать не только про алгоритмы, но и про структуры данных. И сегодняшним выпуском мы начинаем серию видео, посвященных именно теме Структур данных (Data Structures). И начнем мы с такой структуры данных, как Связный список. Связный список - одна из базовых структур данных, которая сейчас не часто встречается в повседневной жизни, особенно в работе фронтендер...
2 ways to deploy Node.js project in Heroku (free hosting)
Просмотров 12 тыс.2 года назад
Друзья, вы очень просили в прошлом видео снять ролик про Deploy Heroku. И сегодня мы как раз с вами разберем 2 различных способа развертывания Node.js приложения в сервисе Heroku: 1) сделаем деплой через Heroku Git 2) и с помощью GitHub. Приятного просмотра! Надеюсь после этого видео вы сможете выбрать для себя один из удобных способов деплоя ваших проектов. 👍Как всегда, жду ваши комментарии, в...
Task from JS Interview: The Best Time to Buy Stocks # 2
Просмотров 21 тыс.2 года назад
Привет, друзья! Продолжаем серию задач про акции. И сегодня условие таково: на вход подается массив с числами - цена акций в каждый конкретный день. Необходимо найти максимальную прибыль, которую можно заработать, продавая и покупая акции. В отличии от первой версии задачи (смотреть здесь: ruclips.net/video/wm8hhQyIR9o/видео.html ) в этот раз мы можем покупать и продавать акции столько раз, ско...
Becoming a Frontender After 30: From Circus Arcobat to Front-End Developer
Просмотров 133 тыс.2 года назад
Друзья, привет! Ура, у нас новый выпуск фронтенд-собеседования! Сегодня у нас в гостях очень позитивный и вдохновляющий герой - Александр! Александр работает профессиональным акробатом в одном из самых известных цирков Лас-Вегаса. Ему 31 год, у него семья, постоянная работа из совершенно иной сферы - и он успевает учить и практиковать фронтенд и идти к своей цели - стать фронтенд-разработчиком ...
Materials for pet projects: a must have for a fresh frontender
Просмотров 40 тыс.2 года назад
Привет, друзья! Прошлое видео с идеями для проектов в портфолио получило большой отклик. И вы просили в комментариях подсказать, где же искать такие крутые материалы для быстрого создания ваших пэт-проектов. 💎Сегодня я делюсь с вами огромной (гигантской!) подборкой абсолютно БЕСПЛАТНЫХ ресурсов для разных этапов создания ваших проектов: 1) начиная от дизайна, 2) разработки шаблонов (верстки), 3...
Pet-projects. What projects must a beginner front-end developer do?
Просмотров 161 тыс.2 года назад
Друзья, привет! Наконец-то мы подошли к долгожданной теме пэт-проектов. В этом видео я собрал для вас 30 классных идей для ваших первых проектов в портфолио. Я также дал подсказки, как вы всегда можете проапргрейдить любой pet-project, где и какую функциональность доработать и какие фишки добавить, чтобы выделиться в глазах работодателя и впоследствии получить заветный офер. Мы также разберем с...
LeetCode task about collecting rainwater | JavaScript interview
Просмотров 19 тыс.2 года назад
Привет, друзья! Продолжаем решать задачи про воду с LeetCode. И сегодня мы разберем задачу про сбор дождевой воды - 42. Trapping Rain Water. Эта задача Hard уровня сложности - такие задают на собеседованиях миддлам и синьорам, поэтому, джуны, в комментах не бояться! 😉 По условиям: у нас на вход подается массив с высотой рельефа. Представим себе, что каждая "ячейка" рельефа у нас шириной 1 и выс...
Task from a front-end interview: Finding the largest container of water | JavaScript
Просмотров 22 тыс.2 года назад
Привет, друзья! Продолжаем решать задачки с собеседований! Сегодня у нас интересная задача про воду - нам необходимо найти контейнер, вмещающий максимальное количество воды (11. Container With Most Water). Эта задача помечена Medium уровнем сложности на Leetcode. На вход нам подается массив с числами. Каждое число представляет собой вертикальную линию заданной высоты. Все линии находятся друг о...
How to make changes in a file invisible to git
Просмотров 16 тыс.2 года назад
Ура, друзья, мы все СУПЕР молодцы - дошли до последнего видео в нашем недельном марафоне git week! Я нами горжусь!! 🎉 🎉🎉 Сегодня поговорим про "нереальную уличную магию", которую я вам обещал в предыдущих видео. А именно про git update-index assume-unchanged. Эта команда позволяет пометить проиндексированный гитом файл - как неменяющийся (даже если в нем существуют изменения). То есть с одной с...
How to fix the last commit in git
Просмотров 13 тыс.2 года назад
👍Ура! Шестой день нашего git week! Мы с вами молодцы! Сегодня будем разбирать,. как можно исправить последний коммит в git. В одном из наших предыдущих видео я уже рассказывал про такую команду, как git commit amend. Она позволяет внести изменения в последний сделанный коммит, при этом вы можете изменить как само содержание коммита, так и коммит сообщение. А сегодня мы рассмотрим более подробно...
Important git clone features you didn't know about!
Просмотров 6 тыс.2 года назад
Друзья, на очереди пятый день git week. Сегодняшнее видео будет про команду Git Clone. Я уверен, что вы все пользовались этой командой для клонирования репозитория с внешнего сервера. Но сегодня я хочу вам рассказать про менее популярные, но очень полезные возможности этой команды. Мы рассмотрим, как можно склонировать репозиторий из какой-то локальной папки, как склонировать только одну ветку ...
How to delete branches in git
Просмотров 14 тыс.2 года назад
Друзья, это наш четвёртый день недели git и сегодня поговорим про ветки. Дело в том, что в вашем репозитории хранятся, как локальные ветки, так и копии веток из удаленных репозиториев. И процесс работы с ними отличается. В этом видео мы рассмотрим с вами, как получить список локальных и внешних веток. Как удалить локальную или внешнюю ветку. Как почистить локальный репозиторий от уже удаленных ...
Git clean: cleaning the working directory from unnecessary files
Просмотров 10 тыс.2 года назад
Git clean: cleaning the working directory from unnecessary files
How to save temporarily changes in GIT using git stash (without committing)
Просмотров 14 тыс.2 года назад
How to save temporarily changes in GIT using git stash (without committing)
Git reset: difference between soft, mixed and hard
Просмотров 16 тыс.2 года назад
Git reset: difference between soft, mixed and hard
Frontend interview. Ilnura, the first job right after Yandex Practicum
Просмотров 166 тыс.2 года назад
Frontend interview. Ilnura, the first job right after Yandex Practicum
How to speed up the development process in WebStorm | Andrey Starovoit Team Lead of the WebStorm
Просмотров 41 тыс.2 года назад
How to speed up the development process in WebStorm | Andrey Starovoit Team Lead of the WebStorm
Solving the problem from JS interview - The valid sequence of brackets | LeetCode problems
Просмотров 38 тыс.2 года назад
Solving the problem from JS interview - The valid sequence of brackets | LeetCode problems
Task from JS Interview: The best time to buy stock #1 | Tasks from LeetCode
Просмотров 17 тыс.2 года назад
Task from JS Interview: The best time to buy stock #1 | Tasks from LeetCode
How to calculate the complexity of an algorithm by BIG O | The clearest explanation!
Просмотров 121 тыс.2 года назад
How to calculate the complexity of an algorithm by BIG O | The clearest explanation!
Interview Task: Brick Wall | JavaScript
Просмотров 22 тыс.2 года назад
Interview Task: Brick Wall | JavaScript
Task from JS interview - Find the intersection of two arrays | LeetCode
Просмотров 26 тыс.3 года назад
Task from JS interview - Find the intersection of two arrays | LeetCode
Frontend Interview of a Junior Developer. Freelancer, student, 20 years old
Просмотров 92 тыс.3 года назад
Frontend Interview of a Junior Developer. Freelancer, student, 20 years old
Problem from JS interview: The first unique character in a string.
Просмотров 16 тыс.3 года назад
Problem from JS interview: The first unique character in a string.
Task from JS interview: Count the number of islands in the matrix | Number of Islands
Просмотров 19 тыс.3 года назад
Task from JS interview: Count the number of islands in the matrix | Number of Islands
Required Soft Skills. What soft skills should have a developer in 2021
Просмотров 26 тыс.3 года назад
Required Soft Skills. What soft skills should have a developer in 2021
Interview of a Junior Frontend developer. Trainee frontender 19 years old from EPAM
Просмотров 405 тыс.3 года назад
Interview of a Junior Frontend developer. Trainee frontender 19 years old from EPAM

Комментарии

  • @TMANandMAISON991
    @TMANandMAISON991 23 часа назад

    версия для тайпскрипта (достаточно громоздкая, зато читабельная + типы): const neededSum = 250; enum Banknotes { Thousand = 1000, FiveHundred = 500, Hundred = 100, Fifty = 50, Thirty = 30, } const balances: Record<Banknotes, number> = { 1000: 5, 500: 2, 100: 5, 50: 100, 30: 6, }; async function main(neededSum: number) { const banknotes = Object.keys(balances).map((banknote) => Number(banknote)); const result: Record<number, number> = {}; let currentSum = 0; for (let i = banknotes.length - 1; i >= 0; i--) { const { sumGiven, numOfBanknotesUsed, shouldContinue } = checkBanknote( banknotes[i], currentSum, neededSum ); if (numOfBanknotesUsed > 0) { result[banknotes[i]] = numOfBanknotesUsed; } if (shouldContinue) { currentSum += sumGiven; if (currentSum === neededSum) { break; } continue; } if (!shouldContinue) { currentSum = sumGiven; break; } } if (currentSum < neededSum) { throw Error( "Please input a different amount, only multiples of 30 and 50 are accepted!" ); } console.log(result); return result; } interface CheckBanknoteResult { shouldContinue: boolean; sumGiven: number; numOfBanknotesUsed: number; } function checkBanknote( banknote: Banknotes, currentSum: number, neededSum: number ): CheckBanknoteResult { const numOfBanknotesAvailable = balances[banknote]; if (numOfBanknotesAvailable === 0) { return { shouldContinue: true, numOfBanknotesUsed: 0, sumGiven: 0, }; } const minToGiveSum = neededSum - currentSum; const numOfBanknotesUsed = Math.min( Math.floor(minToGiveSum / banknote), Math.floor(neededSum / banknote) ); const shouldContinue = numOfBanknotesUsed * banknote < neededSum; const sumGiven = Math.min(minToGiveSum, numOfBanknotesUsed * banknote); return { shouldContinue: shouldContinue, numOfBanknotesUsed: numOfBanknotesUsed, sumGiven: numOfBanknotesUsed > 0 ? sumGiven : 0, }; } main(neededSum);

  • @marytwo8685
    @marytwo8685 2 дня назад

    🤩

  • @anton-trofimov
    @anton-trofimov 5 дней назад

    А зачем было удалять мой комментарий? Что-то плохое в нем? Я просил кого-то объяснить, почему при изменении tail меняется head (кстати, уже разобрался), в видео про это не было, так чем мой комментарий не устроил? Или мб ютуб удалил, хотя там не было ничего запрещенного

  • @user-mq3jq7ib9h
    @user-mq3jq7ib9h 9 дней назад

    Было все понятно до последнего примера

  • @tfmb2182
    @tfmb2182 9 дней назад

    Еще есть сценарий, когда нужно перенести конкретный коммит из другого репозитория

  • @freetimeproject7
    @freetimeproject7 11 дней назад

    два указателя. на 1-й и 2-й масив цикл ду вайл пока не дойдет один указатель до конца. сортируем массивы. указатели оба на 0-м елементе. если одинаковые- добавляем в результат. если разные - увеличиваем указатель того массива где значение меньше. итого. сортировка 2-х масивов и проход O(m+n)

  • @tnafSiseraMlecnafetS
    @tnafSiseraMlecnafetS 12 дней назад

    Решил поиграться и доьавить возможность игры на понижение. Получилось как-то так: function count (prices) { let profit = 0; for (let i = 0; i < prices.length; i++) { if(i > 0) { prices[i] > prices[i - 1] ? profit = profit + prices[i] : profit = profit - prices[i] } else { prices[0] > prices[1] ? profit = profit + prices[0] : profit = profit - prices[0] } } return profit } Обосрать мой код можете в реплаях

  • @ruslanragilo7079
    @ruslanragilo7079 15 дней назад

    У нас в команде появилась устойчивое выполнение... Черипикать свой коммит))

  • @VitalikLomakin-bt9oe
    @VitalikLomakin-bt9oe 15 дней назад

    function firstUnigEl(str) { const map = {}; for (let i = 0; i < str.length; i++) { const el = str[i]; map[el] ? map[el].push(i) : (map[el] = [i]); } const res = Object.values(map) .filter((el) => el.length == 1) .sort((a, b) => a - b) .shift(); return res !== undefined ? res[0] : -1; } вот мое решение они проще чутка. По поводу последнего .sort((a, b) => a - b) .shift(); sort нужен чтобы я могу гарантировать то что у меня будет отсортированный массив, так как влруг поменяю фишку у объектов, что ключи сортируются.

  • @user-Freeemasons
    @user-Freeemasons 19 дней назад

    Большое спасибо за видео! Владимир, вы огромный молодец!!! Вы очень смелый!!! Если бы можно было поставить 1000 лайков, я бы поставила, очень круто! Спасибо за вашу смелость, опыт и вопросы!

  • @sazonikv5086
    @sazonikv5086 28 дней назад

    А в чем разница между merge and rebase?

  • @user-oj7ln2nb9k
    @user-oj7ln2nb9k Месяц назад

    const anagram = (str1, str2) => { const sortedStr1 = str1.split('').sort().join(''); const sortedStr2 = str2.split('').sort().join(''); return sortedStr1 === sortedStr2; }

  • @miloman1995s
    @miloman1995s Месяц назад

    конч проукраинский

  • @user-fj4es6ij4n
    @user-fj4es6ij4n Месяц назад

    const checkIntervals = ([,a], [b]) => b <= a; const mergeInterval = (a, b = a) => [a[0], Math.max(...a, ...b)]; const merge = intervals => intervals .sort(([a], [b]) => a - b) .reduce((acc, value) => { const findedInterval = acc.find((interval) => checkIntervals(interval, value)) return [ ...acc.filter(interval => interval !== findedInterval), mergeInterval(value, findedInterval), ]; }, []);

  • @okelove9807
    @okelove9807 Месяц назад

    Очень круто спасибо.❤

  • @user-cn3zn4gi8o
    @user-cn3zn4gi8o Месяц назад

    Наконец-то)) спасибо вам, очень хорошо объяснили, я до этого читала. И никак не могла понять. У меня скопилось много разных версий. Так и жила несколько лет 😀. Документацию к гиту писал какой - то душнила, чтоб было максимально непонятно и запутанно.

  • @nk_77777
    @nk_77777 Месяц назад

    Классный ролик, спасибо)❤

  • @user-no7sl1yk3f
    @user-no7sl1yk3f Месяц назад

    По идеи у вашего решения сложность O(n + n), разве нет? Цикла же два. Предлагаю вариант O(n): function firstUniqChar(s: string) { const hashUniq = new Map(); s.split('').forEach((char, i) => { hashUniq.has(char) ? hashUniq.delete(char) : hashUniq.set(char, i); }) if (hashUniq.size === 0) return -1; return hashUniq.values().next().value; }

  • @user-uw8hy1lc4p
    @user-uw8hy1lc4p Месяц назад

    А если делать всегда merge, но в какой то момент в конце сделать сквош, получиться же один коммит на задачу

  • @user-no7sl1yk3f
    @user-no7sl1yk3f Месяц назад

    Не хотел делать O(n^2) и решил сделать O(n*log n) с помощью бинарной сортировки. Это пример того - что если не думать о структуре данных то алгоритмы мало полезны. Спасибо за решение function intersect(arr1: Array<number>, arr2: Array<number>) { arr1.sort((a, b) => a - b); arr2.sort((a, b) => a - b); const intersectArr = []; function binSearch(findValue: number, arr: Array<number>) { let left = 0; let right = arr.length - 1; while(left <= right) { const middle = Math.floor((left + right) / 2); const middleValue = arr[middle]; if (middleValue === findValue) { arr.splice(middle, 1); return true; } else if (middleValue > findValue) { right = middle - 1; } else { left = middle + 1; } } return false; } arr1.forEach((item) => { if (binSearch(item, arr2)) intersectArr.push(item); }) return intersectArr; };

  • @wbrframe
    @wbrframe Месяц назад

    Спасибо, качественная подача ✌

    • @wbrframe
      @wbrframe Месяц назад

      Отдельно добавлю, спасибо за видео о донбасе и то что там произошло на самом деле 🤝

  • @maksimdubinin
    @maksimdubinin Месяц назад

    Спасибо за объяснение!

  • @suspiciousgoose7904
    @suspiciousgoose7904 Месяц назад

    Полезно) спасибо за видео вам

  • @larisaplatova1644
    @larisaplatova1644 Месяц назад

    Спасибо за это видео

  • @voidcode2534
    @voidcode2534 Месяц назад

    kaef

  • @peacedets
    @peacedets Месяц назад

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

  • @svet0v
    @svet0v Месяц назад

    8:48 - начало

  • @VasiliyFominykh
    @VasiliyFominykh Месяц назад

    Смотрю такой - "Как удалить дубликаты из отсортированного массива? | Задача с Leetcode", о, думаю, дай гляну может чего кроме set предложат. И правда бла-бла-бла splice... О думаю, надо затестить, а потом смотрю - ёпт, это не питон а ява )))

    • @inoyakaigor
      @inoyakaigor Месяц назад

      Это не Ява)

    • @VasiliyFominykh
      @VasiliyFominykh Месяц назад

      @@inoyakaigor да? Ну ладно, но и питон тоже )

    • @inoyakaigor
      @inoyakaigor Месяц назад

      @@VasiliyFominykh это Яваскрипт =)

    • @VasiliyFominykh
      @VasiliyFominykh Месяц назад

      @@inoyakaigor ))) Ещёб их различать )

  • @user-no7sl1yk3f
    @user-no7sl1yk3f Месяц назад

    Первый решение схоже с вашим не подсматривая. Спасибо function isValid(staples: string) { const stack = []; const mapStaples = { "(": ")", "[": "]", "{": "}", } function isOpening(staple) { return [...Object.keys(mapStaples)].includes(staple); } function isValidClosure(value: string, stapleOpening: string) { if (value === mapStaples[stapleOpening]) return true; return false }; for (const staple of staples) { if (isOpening(staple)) { stack.push(staple); continue; } else if (isValidClosure(staple, stack.at(-1))) { stack.pop(); } else { return false; } } return true; }

  • @VolodymyrNazarenko-ox8ox
    @VolodymyrNazarenko-ox8ox Месяц назад

    Дякую!

  • @AlisaLisa-sx2te
    @AlisaLisa-sx2te 2 месяца назад

    Полезные видео, приятная подача. Спасибо!

  • @user-no7sl1yk3f
    @user-no7sl1yk3f 2 месяца назад

    Спасибо function checkPath(start, end) { const forbiddenCoordinates = {}; function isForbiddenCoordinates(y, x) { return forbiddenCoordinates[y]?.includes(x); } function isAvailableCoordinates(level, x) { return level?.[x] === 0; } function move(position) { const {x, y} = position; if (x === end.x && y === end.y) return true; const level = maze[y]; const nextLevel = maze?.[y + 1]; const availableCoordinates = []; if (isAvailableCoordinates(level, x - 1) && !isForbiddenCoordinates(y, x - 1)) availableCoordinates.push({x: x - 1, y}); if (isAvailableCoordinates(level, x + 1) && !isForbiddenCoordinates(y, x + 1)) availableCoordinates.push({x: x + 1, y}); if (isAvailableCoordinates(nextLevel, x) && !isForbiddenCoordinates(y + 1, x)) availableCoordinates.push({x: x, y: y + 1}); forbiddenCoordinates[y] ? forbiddenCoordinates[y].push(x) : forbiddenCoordinates[y] = [x]; if (availableCoordinates.length === 0) { return false; } for(let coordinate of availableCoordinates) { if (move(coordinate)) return true; } return false; } return move(start); }

  • @nikonlaw
    @nikonlaw 2 месяца назад

    Привет. Спасибо за видео. Я только начал изучать и у меня может странный вопрос. Если я находясь в ветке "фича" сделаю git merge main, то разве моя ветка "фича" не станет единственной и главной? Я думаю это не по православному и нужно мержить свою ветку в "мейн". Я ошибаюсь?

  • @user-sy2dd8do3t
    @user-sy2dd8do3t 2 месяца назад

    респект за имена с теории большого взрыва 😊

  • @boryskatowsky5190
    @boryskatowsky5190 2 месяца назад

    Очень полезное видео. А у Вас нет случайно урока где такую же функцию можно реализовать с использованием ts?

  • @extreametv3639
    @extreametv3639 2 месяца назад

    Не чего не понял что значит эвальвелено?

  • @user-mg4nn6gi5n
    @user-mg4nn6gi5n 2 месяца назад

    Походу в епам нифига не учат

  • @heybeachMIN
    @heybeachMIN 2 месяца назад

    Спасибо за видео! Очень полезное оказалось для меня)

  • @SchnippSchnappShnappi
    @SchnippSchnappShnappi 2 месяца назад

    Спасибо, мне сегодня она попалась в собесе

  • @cleverscript
    @cleverscript 2 месяца назад

    НЕ понимаю почему сразу не показываете ситуации как откатится в remote ветках, ведь это еще большая проблема чем в локальной когда что то пошло не так...

  • @Rozalinaag
    @Rozalinaag 2 месяца назад

    такое себе, этот rebase... лучше старый добрый merge и никаких проблем

  • @asktosimon
    @asktosimon 2 месяца назад

    если проходить с конца массива то не надо заморачиваться над смещением

  • @user-bb6cs6wk6y
    @user-bb6cs6wk6y 2 месяца назад

    А что делать ,если команды git вообще не выполняются Пишу git add мой файл ,и не происходит ничего и файл не добавляется, при git commit ошибку выдает? Только недавно начал в эту тему погружаться, не судите строго

    • @thekiruhan2616
      @thekiruhan2616 2 месяца назад

      У тебя создан репозиторий локальный? Гит есть на компе?

  • @moguha
    @moguha 3 месяца назад

    Огромное спасибо

  • @moguha
    @moguha 3 месяца назад

    Огромное спасибо! Мира вам....и нам

  • @EvgenyTalagaev
    @EvgenyTalagaev 3 месяца назад

    Спасибо, очень полезно

  • @user-cr3gf4mh2n
    @user-cr3gf4mh2n 3 месяца назад

    const trap = (heights) => { let result = 0; for(let i = 1; i < heights.length - 2; i++) { let maxLeft = Math.max(...heights.slice(0,i)) let maxRight = Math.max(...heights.slice(i + 1)) let minHeight = Math.min(maxLeft,maxRight) let quantity = minHeight - heights[i]; if(quantity > 0){ result += quantity } } return result }

  • @kemalgurbansahadow9631
    @kemalgurbansahadow9631 3 месяца назад

    Или я жескто туплю. Или эта тема действительно очень сложная для понимания!

  • @radiakendal5769
    @radiakendal5769 3 месяца назад

    Хорошее объяснение, спасибо

  • @Ramosok
    @Ramosok 3 месяца назад