Two Sum (https://leetcode.com/problems/two-sum)
Дан массив целых чисел nums и целое число target. Вернуть индексы двух чисел, чтобы их сумма давала target.
Решать с помощью разницы target с элементами массива, используя карту.
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.
Два указателя в разных массивах.
Remove Duplicates from Sorted Array (https://leetcode.com/problems/remove-duplicates-from-sorted-array)
Удалить дубликаты из отсортированного массива. Затем вернуть количество уникальных элементов в num
Два указателя в массиве.
Левый указатель остается на месте, пока правый не найдет уникальный элемент (отличный от левого), потом догоняет его
Move Zeroes in Array (https://leetcode.com/problems/move-zeroes)
Дан целочисленный массив nums. Переместить все нулевые элементы в его конец, сохраняя относительный порядок ненулевых элементов.
Два указателя в массиве.
Сначала идут вместе до 0, потом левый фиксируется, а правый идет далее до ненулевого, потом swap и левый++.
Смысл в том, что левый после разделения фиксируется на нуле и ждет swap с ненулевым элементом.
Intersection of Two Arrays (https://leetcode.com/problems/intersection-of-two-arrays)
Даны два целочисленных массива nums1и nums2, вернуть массив их пересечение. Каждый элемент в результате должен быть уникальным, и вы можете вернуть результат в любом порядке.
Нужно применить Set, с ним все легко. Тут не получится применить два указателя никак (у меня не получилось)
Monotonic Array (https://leetcode.com/problems/monotonic-array)
Определить, является ли массив монотонным (если он либо монотонно возрастает, либо монотонно убывает)
Два указателя слева и справа сопровождают итерационный элемент.
Вроде бы все очень просто, но рассмотри случай:
[1, 2, 2, 2, 2, 1]
Тут придется учитывать равенство значений текущего и правого указателя и только в нужный момент двигать левый!
Valid Anagram (https://leetcode.com/problems/valid-anagram)
Даны две строки s и t, вернуть, true если t - это анаграмма из s, и false в противном случае.
(Анаграмма — это слово или фраза, образованные путем перестановки букв другого слова или фразы, при этом все исходные буквы используются ровно один раз.
Использовать карту.
Сделать из строк 2 карты и сравнить.
Longest Palindrome (https://leetcode.com/problems/valid-anagram)
Дана строка s, состоящая из строчных или заглавных букв, вернуть длину самой длинной строки-палиндрома, которую можно построить с помощью этих букв.
Палиндром — это строка, которая одинаково читается слева направо и слева направо.
Использовать карту.
Через нее уже прямой логикой просчитывать алгоритм длины палиндрома.
Рассмотри edge-case:
“aaaaaaa” - строка полностью из одного символа
Longest Common Prefix (https://leetcode.com/problems/longest-common-prefix)
Напишите функцию для поиска самой длинной общей строки префикса среди массива строк.
Никакого определенного паттерна, надо придумать алгоритм, нужны знания методов для String
Очень внимательно рассмотреть edge-cases:
- массив пустой
- в массиве строка пустая
- в массиве все строки одинаковые
Различные edge-cases могут давать либо неправильный результат, но скорее IndexOutOfBoundsException
Add Binary (https://leetcode.com/problems/add-binary)
Даны две двоичные строки a и b, вернуть их сумму в виде двоичной строки.
В помощь: https://calcus.ru/perevod-sistem-schisleniya
Ничего сложного, внимательно изучить алгоритм преобразования по сайту.
Также не забыть метод парсинга строки в число
Valid Palindrome II (https://leetcode.com/problems/valid-palindrome-ii)
Для данной строки s вернуть, может true ли она s быть палиндромом после удаления из нее не более одного символа.
Палиндром — это строка, которая одинаково читается слева направо и слева направо
Два указателя в массиве символов строки
Правильно определить алгоритм “удаления” лишнего символа.
И внимательно рассмотреть edge-cases для “удаления”.
Palindrome Linked List (https://leetcode.com/problems/palindrome-linked-list)
Дан заголовок односвязного списка head. Является ли список палиндромом.
Обойти весь односвязный список, положив значение в список (list), затем как в массиве проверить на палиндром.
Merge Two Sorted Lists (https://leetcode.com/problems/merge-two-sorted-lists)
Вам даны заголовки двух отсортированных связанных списков list1 и list2.
Объединить два списка в один отсортированный список и вернуть заголовок этого списка.
Оба list1 и list2 сортируются в возрастающем порядке.
Создать пустой связный список и заполнять его, все аналогично задача про слияние двух массивов.
Reverse Linked List (https://leetcode.com/problems/reverse-linked-list)
Дан односвязный список, переверните его и верните перевернутый список.
Создать новый список и добавлять в него элементы заданного. Алгоритм простой, надо правильно все сделать (воспользоваться temp переменной)
Наглядно https://www.youtube.com/watch?v=8feKVQcOs28
Remove Linked List Elements (https://leetcode.com/problems/remove-linked-list-elements)
Дан связный список и целое число val, удалить все узлы связного списка, имеющие Node.val == val, и вернуть новую голову.
Создать новый список и добавлять в него не val элементы. Алгоритм простой, надо правильно все сделать.
Valid Parentheses (https://leetcode.com/problems/valid-parentheses)
Дана строка s, содержащая только символы ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘и ‘]’. Определите, является ли входная строка допустимой.
Применить Stack правильно
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]
Применить pre-order обход бинарного дерева
https://dev.to/faangmaster/invert-binary-tree-4ghn
Diameter of Binary Tree (https://leetcode.com/problems/diameter-of-binary-tree)
Для заданного root двоичного дерева вернуть длину диаметра дерева.
Диаметр бинарного дерева — это длина самого длинного пути между любыми двумя узлами в дереве.
Этот путь может проходить через root.
Длина пути между двумя узлами представлена числом ребер между ними.
Правильно применить рекурсию для решения, похоже на post-order обход дерева.
Balanced Binary Tree (https://leetcode.com/problems/balanced-binary-tree)
Дано бинарное дерево, определите, является ли оно сбалансированным по высоте.
Сбалансированное по высоте двоичное дерево — это двоичное дерево, в котором глубина двух поддеревьев каждого узла никогда не отличается более чем на единицу.
Правильно применить post-order обход дерева.
Можно из базового метода вызывать новосозданный рекурсионный, который возвращает одновременно данные и по балансировке ноды, и ее глубину
Maximum Depth of Binary Tree (https://leetcode.com/problems/maximum-depth-of-binary-tree)
Для заданного root двоичного дерева вернуть его максимальную глубину.
Максимальная глубина бинарного дерева — это количество узлов на самом длинном пути от корневого узла до самого дальнего листового узла.
Применить post-order обход дерева.
Closest Binary Search Tree Value (https://leetcode.com/problems/closest-binary-search-tree-value)
Дано бинарное дерево поиска (BST) с целочисленными значениями и целевое значение target типа double. Необходимо найти значение узла в дереве, которое наиболее близко к целевому значению.
Правильно применить post-order обход дерева.
Можно из базового метода вызывать новосозданный рекурсионный, который возвращает одновременно данные и по текущему наиближейшему значению, и по дельте с target.
Range Sum of BST (https://leetcode.com/problems/range-sum-of-bst)
Дан root узел двоичного дерева поиска и два целых числа low и high. Вернуть сумму значений всех узлов со значением в диапазоне [low, high].
Применить post-order обход дерева.
Convert Sorted Array to Binary Search Tree https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree - решить потом
Flood Fill https://leetcode.com/problems/flood-fill
Вам дано изображение, представленное сеткой m x n целых чисел image, где image[i][j] представляет собой значение пикселя изображения. Вам также даны три целых числа sr, sc, и color.
Ваша задача — выполнить заливку изображения, начиная с пикселя image[sr][sc].
(лучше посмотреть более подробное описание по ссылке)
DFS, внимательно
https://dev.to/faangmaster/zadacha-na-obkhod-ghrafa-zalivka-flood-fill-ep8