Как стать автором
Обновить

Комментарии 19

Sliding window, не?

В статье оверинжиниринг какой-то....

Встретили 1 - прибавли к счетчику 1, встретили 0 сравнили счетчик с макс значением и обнулили счетчик...

Так и слона не продадите статью писать не о чем будет.

Только сравнивать надо на единичке, нолик может не наступить)

пробовал, но там есть корнер кейсы по типу 11110011101101 и оно ломалось там, а мой код проходит все кейсы

А почему бы просто не запомнить индекс предыдущего нуля и вычесть индекс текущего нуля или конца массива? O(N) по скорости и не нужно ничего городить.

  1. решение плохое не только по производительности и по факту избыточного усложнения кода, но еще и по памяти.

  2. статья по задачам уровня "Easy" представляется мне не востребованной: на LeetCode стоит кликнуть
    на "Solutions", тут же выпадет список с кучей решений и объяснений. Учитывая, что задача простейшая, я не представляю, кому может не хватить тех объяснений к решениям, что там выложены.

Если планируете писать еще - я бы посоветовал замахнуться на "Hard". В идеале, при этом, не копируя чужих решений, что уже сопровождаются подробным разъяснением, как оно работает.
Таких задач там можно найти, если поискать.

Чтобы не быть голословным: https://leetcode.com/problems/n-queens-ii/

  • n королев на поле из n * n клеток

  • задача: определить количество возможных позиций, в которых королевы друг другу не угрожают

Я не придумал ничего, кроме как решить саму задачу - найти все размещения - и посчитать их количество. В чужих ответах с ходу ничего интересного тоже не нашел.

function findMaxConsecutiveOnes(nums: number[]): number {
  return Math.max(
    ...nums
      .join('')
      .split('0')
      .map(ones => ones.length)
  );
}

Операторы непривычные, поэтому ещё вариант на c#

int maxConsecutiveOnes = string.Join("", nums)
    .Split('0')
    .Select(ones => ones.Length)
    .Max();

Либо не join, а concat

Коротко и красиво, но памяти лишней сожрет немало

Ну красота в глазах смотрящего, но тут вычислительная сложность страшная.

Я бы посоветовал начинающему автору отложить пока leetcode в сторону, а вместо этого сосредоточиться на каком-нибудь хорошем курсе по алгоритмам и структурам данных. Как осилите - возвращайтесь на leetcode. Иначе, скорее всего, вас ожидает скорая фрустрация. Дальше будут задачки посложнее, и решить их с "наскока", не зная классических методов, приемов, алгоритмов и структур данных, дело практически безнадежное.

Это стильно!

На Perl можно писать, используя любой язык ;)

"Для решения будем использовать язык программирования TypeScript." - TypeScript не язык

А что?

TypeScript is a statically typed superset of JavaScript. - ето не не язык, а wrapper c типами поверх JavaScript.

TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale. - На официальном сайте. Тем более есть возможность использовать несовместимые с js фичи.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории