ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
КатегорияСсылкаЗаметки
2
Listhttps://leetcode.com/problems/linked-list-cycle/Создаем Set с ObjectIdentifier и проверяем был ли такой объект
3
Listhttps://leetcode.com/problems/add-two-numbers/
4
Arrayhttps://leetcode.com/problems/longest-subarray-of-1s-after-deleting-one-element/С помощью двух указателей и одного указателя на ноль проверям подмассивы.
Если указатель на ноль > левого указателя, то находим размер последовательности.
и сдвигаем указатель левого до последнего указателя нуля + 1. Не забываем после цикла расчитать разницу указателей
5
Arrayhttps://leetcode.com/problems/summary-ranges/description/Решать с помощью двух указателей. Один идет вперед и проверяет не больше ли другого на 1. Если больше, то
запускается условие, которое проверяет не равен ли правый указатель левому. После выхода из цикла доп поверка на разницу индексов
6
Arrayhttps://leetcode.com/problems/string-compression/description/берем две переменных: char, count
идем переменной и если она отличается от прошлой, то берем предыдущий индекс и прибавляем к символу + строке.
после выхода из цикла делаем такую проверку с последним символом
7
Arrayhttps://leetcode.com/problems/subarray-sum-equals-k/Используем префиксную сумму для подсчёта суммы элементов от начала массива до текущей позиции. Если разница между текущей префиксной суммой и k уже встречалась ранее, значит, существует подмассив, сумма которого равна k .В хэштаблице храним количество раз, сколько раз каждая префиксная сумма встречалась. Это позволяет мгновенно узнать, существует ли нужная сумма.
8
Arrayhttps://leetcode.com/problems/intersection-of-two-arrays-ii/Используем словарь, куда записываем все числа и кол-во раз, которые используются.
Проходим вторым массивом по первому массиву и смотрим на значения
9
https://leetcode.com/problems/permutation-in-string/description/Используем две хэшмапы, где вторую двигаем с помощью скользящего окна. Удаляем элемент по левому поинтеру и
добавляем по правому
10
Stringhttps://leetcode.com/problems/is-subsequence/Делаем два указателя, где если они равны к одному символу, то двигаем левый влево. В конце делаем проверку
левого указателя и == кол-ву символов в первой строке
11
Stringhttps://leetcode.com/problems/group-anagrams/Создаем словарь, где ключ — это отсортированный элемент, а значение — это массив групп.
12
Stringhttps://leetcode.com/problems/find-all-anagrams-in-a-string/Даны две строки s и p, верните массив всех начальных индексов анаграмм p в s. Вы можете вернуть ответ в любом порядке.

В этом решении мы делаем два словаря:

1. Первый словарь — это анаграмма, которую нужно найти в строке
2. Второй словарь скользящий. Он начинает двигаться вправо и, если длина правого указателя будет равна длине второй строке, то начинаем проверять условие:
1. если собранный словарь равен входящему словарю палиндрома, то добавляем индекс в результат
2. в этом же условии уменьшаем значение символа по левому указателю на 1. Проверяем, что если оно равно 0, то удаляем
13
Stringhttps://leetcode.com/problems/valid-anagram/Сортируем строки или берем два словаря и сравниваем
14
Arrayhttps://leetcode.com/problems/maximum-subarray/Имеем две переменные: текущая и максимальная сумма. Проводим линейный цикл с сравнением текущей и максимальной; Если текущая сумма < 0, то обнуляем текущую
15
Stringhttps://leetcode.com/problems/minimum-number-of-steps-to-make-two-strings-anagram/description/
16
Linked Listhttps://leetcode.com/problems/reverse-linked-list/создать две ноды: current и prev. Запустить цикл, пока current != nil. Создать переменную next. Добавить к current.next = prev. А prev = current. Где current = next. Возвращаем prev
17
Arrayhttps://leetcode.com/problems/line-reflection/// создаем две переменных minX, maxX, а также set из точек.
// Проходимся по всем точкам и находим minX, maxX. Также добавляем точки в set.
// находим симитричную линию через формулу reflectionLine = minX + maxX.
// проходимся по всем точкам и ищем в сете симетричную точку reflectionLine - point[0]
// если такой нет, то возвращаем false
18
Stringhttps://leetcode.com/problems/isomorphic-stringsсделать два словаря, в ключ которых будет класться символ строки, а в значение символ соседней строки.
в цикле добавляем условие, если значения символа != значению второго символа, то возвращаем false
19
Stringhttps://leetcode.com/problems/valid-palindrome-ii/проверяем на палиндром вначале: идем двумя указателями с начала и конца. Если левый индекс больше или равно правого, то возвращаем true. Если обнаружены несовпадающие символы, то удаляем либо символ слева, либо символ справа, и проверяем оставшуюся строку на палиндром.
20
Arrayhttps://leetcode.com/problems/longest-continuous-increasing-subsequence/descriptionвзять две переменных current & max и идти последовательно по циклу смотря больше ли текущий предыдущего, если так, то добавляем последовательность в результат. Если нет, то спрасываем текущий счетчик
21
https://leetcode.com/problems/merge-intervals/
22
Arrayhttps://leetcode.com/problems/best-time-to-buy-and-sell-stock/Решение с помощью метода скользящего окна. Двигаем правый указатель, а левый держим на самом маленьком элементе. Если значение правого указателя меньше значения левого, то меняем левый на правый
23
https://leetcode.com/problems/shortest-way-to-form-string/
24
Arrayhttps://leetcode.com/problems/monotonic-array/Нужно сделать два флага, которые определят возрастающая или убывающая последовательность. Пройтись в цикле и отключить, если встречаем противоположное значение. Результатом будут эти два флага
25
Arrayhttps://leetcode.com/problems/squares-of-a-sorted-array/description/Берем левый и правый указатель, а также указатель для записи = right. Запускаем цикл, пока основной указатель >= 0. Внутри цикла делаем абсолютное сравнение по левому и правому значению, если левое больше правого, то записываем в индекс квадрат левого числа, если правого — то прового. двигаем основной указатель влево
26
Arrayhttps://leetcode.com/problems/max-consecutive-ones-iii/description/идет два указателя left, right и счетчик допустимых нулей. Идем по массиву и считаем количество нулей. если кол-во нулей больше чем k, то двигаем левый указатель, пока zeroCount < k. В конце массива вычисляем длину последовательности
27
Arrayhttps://leetcode.com/problems/running-sum-of-1d-array/проходим каждый элемент складывая с предыдущим
28
Arrayhttps://leetcode.com/problems/minimum-value-to-get-positive-step-by-step-sum/
Чтобы все суммы оставались положительными, нужно компенсировать наихудшую (минимальную) промежуточную сумму, сдвинув её к 1 . Это обеспечивается добавлением |result| + 1 к начальному значению.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100