cam final 2K

36 подписчиков

12+
12+

1 просмотр

6 дней назад

ПожаловатьсяНарушение авторских прав

36 подписчиков

12+
12+

1 просмотр

6 дней назад

ПожаловатьсяНарушение авторских прав
12+
12+

1 просмотр

6 дней назад

Решение задачи "Первый уникальный символ в строке" на LeetCode 387 на Java — самое простое пошаговое объяснение. Это та же самая задача, которая задавалась на собеседованиях в Infosys и Wipro: дана строка s из строчных английских букв, верните индекс первого символа, который не повторяется, иначе -1. Хитрость обманчиво проста: символ "уникален", когда его частота в строке равна единице. Поэтому план состоит всего из двух проходов. Первый проход подсчитывает частоту для каждой буквы (поскольку строка s содержит только строчные английские буквы, достаточно фиксированного массива размером 26 — индекс = буква - 'a'). Второй проход проходит по исходной строке слева направо и возвращает индекс первого символа, значение которого равно 1. Если такого символа нет, возвращается -1. Никакой сортировки, никаких дополнительных структур, кроме 26-слотового массива счетчиков — вот почему Infosys и Wipro любят этот вопрос: он вознаграждает спокойный, правильный подход с использованием массивов, а не сложные трюки. Это видео демонстрирует чистое решение на Java и точный пример, который ожидает интервьюер. Вы храните значения счетчиков с помощью "int[] count = new int[26];", затем "count[s.charAt(i) - 'a']++" для каждого символа. Второй цикл проверяет "if (count[s.charAt(i) - 'a'] == 1) return i;" и, наконец, "return -1;". Временная сложность составляет O(n) при двух линейных проходах; пространственная сложность O(1), поскольку массив счетчиков всегда содержит 26 слотов независимо от длины строки. Интервьюеры предпочитают этот вариант, потому что он устойчив к ошибкам и его легко объяснить вслух. Если вы готовитесь к собеседованию в Infosys, Wipro или любой другой продуктовой компании, эта задача охватывает массивы, подсчет частоты, сопоставление символов с индексами и логику раннего возврата значения за один раз. Типичные ошибки: вычитание неправильной базы («a» вместо «A»), возврат индекса счетчика вместо строкового индекса или выполнение второго прохода HashMap, что приводит к нерациональному использованию памяти. В пошаговом руководстве указаны все ловушки и показаны точные строки кода, позволяющие их избежать. Практическое упражнение: как только вы сможете решить задачу менее чем за две минуты, попробуйте варианты — вернуть символ вместо индекса, рассматривать заглавные и строчные буквы как разные или подсчитать количество уникальных символов. В репозитории GitHub ниже находится исполняемый Java-файл, а также три тестовых случая (обычный, со всеми повторяющимися символами, граничный), чтобы вы могли проверить свои знания перед собеседованием. Разделы: 00:00 - Первый уникальный символ в строке | Задача LeetCode 387 00:08 - Вопрос на собеседовании в Infosys и Wipro: что они спрашивают 00:20 - Основная интуиция: символ уникален, когда его частота равна 1 00:45 - Двухпроходный подход (время O(n), пространство O(1)) 01:30 - Построчный разбор кода на Java 02:15 - Ловушки, которых следует избегать на собеседовании (базовый символ, путаница с индексами) 03:10 - Упрощенное объяснение временной и пространственной сложности 04:00 - Итоговый обзор и советы по повторению материала для Infosys + Wipro Код + тестовые примеры: https://github.com/Shaanworkspace/YOUTUBE-DRIVE Сообщество Часто задаваемые вопросы: В: Что такое LeetCode 387. Первый уникальный символ в строке? О: Дана строка s из строчных английских букв. Верните индекс первого символа, который встречается ровно один раз; если такого символа нет, верните -1. В: Как проще всего решить задачу «Первый уникальный символ в строке»? О: Подсчитайте частоту каждой буквы за один проход (массив из 26 элементов, индекс = char - 'a'), затем снова просканируйте строку и верните индекс первой буквы, количество которых равно 1. В: Почему этот вопрос задают на собеседованиях в Infosys и Wipro? О: Он проверяет работу с массивами/подсчетом частоты, сопоставление символов и индексов, а также чистый, безошибочный код в условиях ограниченного времени — это ключевой момент на собеседованиях в Infosys и Wipro. (TCS обычно не задает именно этот вопрос.) В: Какова временная и пространственная сложность? О: Время O(n) (два линейных прохода по строке) и пространство O(1) (фиксированный массив из 26 ячеек). В: Можно ли решить задачу с помощью HashMap вместо массива? О: Да. HashMap работает с любым набором символов, но массив из 26 символов быстрее и занимает постоянное пространство, поскольку на вход поступают только строчные английские буквы. Если это руководство по решению LeetCode 387 вам помогло, подпишитесь на канал Shaan Labs, чтобы получать ежедневные решения задач для собеседований в Infosys, Wipro и LeetCode, и поделитесь своим подходом в комментариях. #Lee...

Название:

cam final 2K

Категория:

Разное