LeetCode (easy) Flashcards

(30 cards)

1
Q

Two Sum (https://leetcode.com/problems/two-sum)

Дан массив целых чисел nums и целое число target. Вернуть индексы двух чисел, чтобы их сумма давала target.

A

Решать с помощью разницы target с элементами массива, используя карту.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Merge Sorted Array (https://leetcode.com/problems/merge-sorted-array)

Вам даны два целочисленных массива nums1и nums2, отсортированных в неубывающем порядке, и два целых числа m и n, представляющие количество элементов в nums1 и nums2 соответственно.
Merge nums1 and nums2 into a single array sorted in non-decreasing order.

A

Два указателя в разных массивах.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Remove Duplicates from Sorted Array (https://leetcode.com/problems/remove-duplicates-from-sorted-array)

Удалить дубликаты из отсортированного массива. Затем вернуть количество уникальных элементов в num

A

Два указателя в массиве.
Левый указатель остается на месте, пока правый не найдет уникальный элемент (отличный от левого), потом догоняет его

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Move Zeroes in Array (https://leetcode.com/problems/move-zeroes)

Дан целочисленный массив nums. Переместить все нулевые элементы в его конец, сохраняя относительный порядок ненулевых элементов.

A

Два указателя в массиве.
Сначала идут вместе до 0, потом левый фиксируется, а правый идет далее до ненулевого, потом swap и левый++.
Смысл в том, что левый после разделения фиксируется на нуле и ждет swap с ненулевым элементом.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Intersection of Two Arrays (https://leetcode.com/problems/intersection-of-two-arrays)

Даны два целочисленных массива nums1и nums2, вернуть массив их пересечение. Каждый элемент в результате должен быть уникальным, и вы можете вернуть результат в любом порядке.

A

Нужно применить Set, с ним все легко. Тут не получится применить два указателя никак (у меня не получилось)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Monotonic Array (https://leetcode.com/problems/monotonic-array)

Определить, является ли массив монотонным (если он либо монотонно возрастает, либо монотонно убывает)

A

Два указателя слева и справа сопровождают итерационный элемент.
Вроде бы все очень просто, но рассмотри случай:
[1, 2, 2, 2, 2, 1]
Тут придется учитывать равенство значений текущего и правого указателя и только в нужный момент двигать левый!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Valid Anagram (https://leetcode.com/problems/valid-anagram)

Даны две строки s и t, вернуть, true если t - это анаграмма из s, и false в противном случае.
(Анаграмма — это слово или фраза, образованные путем перестановки букв другого слова или фразы, при этом все исходные буквы используются ровно один раз.

A

Использовать карту.

Сделать из строк 2 карты и сравнить.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Longest Palindrome (https://leetcode.com/problems/valid-anagram)

Дана строка s, состоящая из строчных или заглавных букв, вернуть длину самой длинной строки-палиндрома, которую можно построить с помощью этих букв.
Палиндром — это строка, которая одинаково читается слева направо и слева направо.

A

Использовать карту.

Через нее уже прямой логикой просчитывать алгоритм длины палиндрома.
Рассмотри edge-case:
“aaaaaaa” - строка полностью из одного символа

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Longest Common Prefix (https://leetcode.com/problems/longest-common-prefix)

Напишите функцию для поиска самой длинной общей строки префикса среди массива строк.

A

Никакого определенного паттерна, надо придумать алгоритм, нужны знания методов для String

Очень внимательно рассмотреть edge-cases:
- массив пустой
- в массиве строка пустая
- в массиве все строки одинаковые
Различные edge-cases могут давать либо неправильный результат, но скорее IndexOutOfBoundsException

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Add Binary (https://leetcode.com/problems/add-binary)

Даны две двоичные строки a и b, вернуть их сумму в виде двоичной строки.
В помощь: https://calcus.ru/perevod-sistem-schisleniya

A

Ничего сложного, внимательно изучить алгоритм преобразования по сайту.
Также не забыть метод парсинга строки в число

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Valid Palindrome II (https://leetcode.com/problems/valid-palindrome-ii)

Для данной строки s вернуть, может true ли она s быть палиндромом после удаления из нее не более одного символа.
Палиндром — это строка, которая одинаково читается слева направо и слева направо

A

Два указателя в массиве символов строки

Правильно определить алгоритм “удаления” лишнего символа.
И внимательно рассмотреть edge-cases для “удаления”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Palindrome Linked List (https://leetcode.com/problems/palindrome-linked-list)

Дан заголовок односвязного списка head. Является ли список палиндромом.

A

Обойти весь односвязный список, положив значение в список (list), затем как в массиве проверить на палиндром.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Merge Two Sorted Lists (https://leetcode.com/problems/merge-two-sorted-lists)

Вам даны заголовки двух отсортированных связанных списков list1 и list2.
Объединить два списка в один отсортированный список и вернуть заголовок этого списка.
Оба list1 и list2 сортируются в возрастающем порядке.

A

Создать пустой связный список и заполнять его, все аналогично задача про слияние двух массивов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Reverse Linked List (https://leetcode.com/problems/reverse-linked-list)

Дан односвязный список, переверните его и верните перевернутый список.

A

Создать новый список и добавлять в него элементы заданного. Алгоритм простой, надо правильно все сделать (воспользоваться temp переменной)

Наглядно https://www.youtube.com/watch?v=8feKVQcOs28

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Remove Linked List Elements (https://leetcode.com/problems/remove-linked-list-elements)

Дан связный список и целое число val, удалить все узлы связного списка, имеющие Node.val == val, и вернуть новую голову.

A

Создать новый список и добавлять в него не val элементы. Алгоритм простой, надо правильно все сделать.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Valid Parentheses (https://leetcode.com/problems/valid-parentheses)

Дана строка s, содержащая только символы ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘и ‘]’. Определите, является ли входная строка допустимой.

A

Применить Stack правильно

17
Q

Invert Binary Tree (https://leetcode.com/problems/invert-binary-tree)

Дано root двоичное дерево, инвертировать дерево и вернуть его корень. Примеры:
[2,1,3] —-> [2,3,1]
[4,2,7,1,3,6,9] —-> [4,7,2,9,6,3,1]

A

Применить pre-order обход бинарного дерева
https://dev.to/faangmaster/invert-binary-tree-4ghn

18
Q

Diameter of Binary Tree (https://leetcode.com/problems/diameter-of-binary-tree)

Для заданного root двоичного дерева вернуть длину диаметра дерева.
Диаметр бинарного дерева — это длина самого длинного пути между любыми двумя узлами в дереве.
Этот путь может проходить через root.
Длина пути между двумя узлами представлена числом ребер между ними.

A

Правильно применить рекурсию для решения, похоже на post-order обход дерева.

19
Q

Balanced Binary Tree (https://leetcode.com/problems/balanced-binary-tree)

Дано бинарное дерево, определите, является ли оно сбалансированным по высоте.
Сбалансированное по высоте двоичное дерево — это двоичное дерево, в котором глубина двух поддеревьев каждого узла никогда не отличается более чем на единицу.

A

Правильно применить post-order обход дерева.

Можно из базового метода вызывать новосозданный рекурсионный, который возвращает одновременно данные и по балансировке ноды, и ее глубину

20
Q

Maximum Depth of Binary Tree (https://leetcode.com/problems/maximum-depth-of-binary-tree)

Для заданного root двоичного дерева вернуть его максимальную глубину.
Максимальная глубина бинарного дерева — это количество узлов на самом длинном пути от корневого узла до самого дальнего листового узла.

A

Применить post-order обход дерева.

21
Q

Closest Binary Search Tree Value (https://leetcode.com/problems/closest-binary-search-tree-value)

Дано бинарное дерево поиска (BST) с целочисленными значениями и целевое значение target типа double. Необходимо найти значение узла в дереве, которое наиболее близко к целевому значению.

A

Правильно применить post-order обход дерева.

Можно из базового метода вызывать новосозданный рекурсионный, который возвращает одновременно данные и по текущему наиближейшему значению, и по дельте с target.

22
Q

Range Sum of BST (https://leetcode.com/problems/range-sum-of-bst)

Дан root узел двоичного дерева поиска и два целых числа low и high. Вернуть сумму значений всех узлов со значением в диапазоне [low, high].

A

Применить post-order обход дерева.

23
Q

Convert Sorted Array to Binary Search Tree https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree - решить потом

24
Q

Flood Fill https://leetcode.com/problems/flood-fill

Вам дано изображение, представленное сеткой m x n целых чисел image, где image[i][j] представляет собой значение пикселя изображения. Вам также даны три целых числа sr, sc, и color.
Ваша задача — выполнить заливку изображения, начиная с пикселя image[sr][sc].
(лучше посмотреть более подробное описание по ссылке)

A

DFS, внимательно

https://dev.to/faangmaster/zadacha-na-obkhod-ghrafa-zalivka-flood-fill-ep8

25
Island Perimeter https://leetcode.com/problems/island-perimeter Вам дана row x col grid карта, на которой grid[i][j] = 1 - это земля, а grid[i][j] = 0 - вода. Определите периметр острова. (лучше посмотреть более подробное описание по ссылке)
DFS, внимательно
26
Fibonacci Number https://leetcode.com/problems/fibonacci-number
Top-down динамическое программирование.
27
Best Time to Buy and Sell Stock https://leetcode.com/problems/best-time-to-buy-and-sell-stock (лучше посмотреть более подробное описание по ссылке)
Bottom-up динамическое программирование То есть найти решение, при котором предыдущие шаги помогут вычислить результат для текущей итерации -> общий результат
28
Climbing Stairs https://leetcode.com/problems/climbing-stairs Смотрел уже решение очень похожей, поэтому решить потом
29
Pascal's Triangle https://leetcode.com/problems/pascals-triangle
Top-down динамическое программирование.
30
Plus One https://leetcode.com/problems/plus-one