https://leetcode.com/problems/longest-substring-without-repeating-characters/
Задача: Найти длину самой длинной подстроки без повторяющихся символов.
Алгоритм:
- Используем технику "скользящего окна" с двумя указателями
- Храним уникальные символы текущего окна в
unordered_set - При обнаружении повторяющегося символа сдвигаем левую границу окна
- На каждом шаге обновляем максимальную длину
Сложность: O(n) времени, O(min(n, m)) памяти (m - размер алфавита)
https://leetcode.com/problems/reverse-integer/description/
Задача: Развернуть цифры целого числа с обработкой переполнения.
Алгоритм:
- Используем арифметические операции для получения цифр:
digit = x % 10 - Постепенно строим перевернутое число:
reversed = reversed * 10 + digit - Проверяем переполнение на каждом шаге перед умножением на 10
- Возвращаем 0, если перевернутое число выходит за границы 32-битного int
Сложность: O(log₁₀n) времени, O(1) памяти
https://leetcode.com/problems/two-sum/description/
Задача: Найти два числа в массиве, которые в сумме дают целевое значение.
Алгоритм:
- Используем хеш-таблицу
unordered_mapдля хранения чисел и их индексов - Для каждого элемента вычисляем, какое второе число нужно для достижения суммы
- Если нужное число уже есть в таблице - пара найдена
- В противном случае добавляем текущее число в таблицу
Сложность: O(n) времени, O(n) памяти