Комментарии 19
Sliding window, не?
В статье оверинжиниринг какой-то....
Встретили 1 - прибавли к счетчику 1, встретили 0 сравнили счетчик с макс значением и обнулили счетчик...
А почему бы просто не запомнить индекс предыдущего нуля и вычесть индекс текущего нуля или конца массива? O(N) по скорости и не нужно ничего городить.
решение плохое не только по производительности и по факту избыточного усложнения кода, но еще и по памяти.
статья по задачам уровня "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. Иначе, скорее всего, вас ожидает скорая фрустрация. Дальше будут задачки посложнее, и решить их с "наскока", не зная классических методов, приемов, алгоритмов и структур данных, дело практически безнадежное.
Такие паззлы надо делать в "экстравагантном" стиле, чтобы не заскучать:
console.log(/(1+)(?!.*?\1)/.exec('0011110111111011')?.[0].length || 0); // 6
"Для решения будем использовать язык программирования TypeScript." - TypeScript не язык
А что?
TypeScript is a statically typed superset of JavaScript. - ето не не язык, а wrapper c типами поверх JavaScript.
1/n: Задачи leetcode JS — «Max Consecutive Ones» (Найти максимальное количество последовательных единиц)