LIMB
Вход Регистрация

тема

Task №217 (Easy) LeetCode. Подробное решение

Kroy22 · · 4 ответов · 338 просмотров

Решение задач с LeetCode​

С помощью LeetCode можно подготовиться к собеседованию, например в Google! 
Я готов поддержать вас в освоении решения задач. Для достижения успеха важно самостоятельно формулировать цели. Можно попросить AI создавать задания разной сложности, решать их и отправлять ответы на проверку. Я могу предоставить варианты решений, но итоговый результат будет зависеть от ваших усилий. Определите свои цели и уверенно идите к их реализации. У вас всё получится!!!!

Task №217 (Easy)​

Итак. Вот что от нас просят:

Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.

 

Example 1:

Input:
 nums = [1,2,3,1]

Output: true

Explanation:

The element 1 occurs at the indices 0 and 3.

Example 2:

Input:
 nums = [1,2,3,4]

Output: false

Explanation:

All elements are distinct.

Example 3:

Input:
 nums = [1,1,1,3,3,4,3,2,4,2]

Output: true

 

Constraints:

  • 1 <= nums.length <= 10**5
  • -10**9 <= nums <= 10**9

Если хоть одно число повторяется то выводим True, если нет, то False



Вот как бы я это решил:

class Solution(object):
  # Объявляем класс Solution, наследуемый от object (стандарт для Python)

    def containsDuplicate(self, nums):   # Определяем метод containsDuplicate с параметрами: self (ссылка на экземпляр класса) и nums (входной массив чисел)

        """  # Начало докстринга (документационной строки)
               :type nums: List[int]   # Указываем тип параметра nums: список целых чисел
               :rtype: bool   # Указываем тип возвращаемого значения: булево (True/False)
               """  # Конец докстринга

        known = set() # Создаём пустое множество known — будем хранить в нём уже встреченные числа

        for num in nums: # Запускаем цикл: перебираем каждое число num из входного массива nums

            if num in known:  # Проверяем: есть ли текущее число num уже в множестве known?
                return True  # Если да (число уже встречалось) — сразу возвращаем True (дубликат найден!)

            known.add(num) # Если числа ещё не было в множестве — добавляем его в known

        return False # Если цикл прошёл весь массив и дубликатов не нашёл — возвращаем False


Логика работы:

  1. Создаётся пустое множество known для хранения уже встреченных чисел.
  2. Цикл for перебирает все элементы массива nums.
  3. Для каждого числа num проверяется, есть ли оно в множестве known:
  4. Если да — сразу возвращается True (дубликат найден).
  5. Если нет — число добавляется в множество known.
  6. Если цикл завершился без находок дубликатов, возвращается False.


Пошаговый разбор на примерах​

Пример 1: nums = [1, 2, 3, 1]

  1. num = 1: нет в known → добавляем 1 в known.
  2. num = 2: нет в known → добавляем 2 в known.
  3. num = 3: нет в known → добавляем 3 в known.
  4. num = 1: уже есть в known → возвращаем True.
Результат: True (дубликат есть).

Пример 2: nums = [1, 2, 3, 4]

  1. num = 1: нет в known → добавляем.
  2. num = 2: нет в known → добавляем.
  3. num = 3: нет в known → добавляем.
  4. num = 4: нет в known → добавляем.
  5. Цикл завершён → возвращаем False.
Результат: False (дубликатов нет).

Пример 3: nums = [1, 1, 1, 3, 3, 4, 3, 2, 4, 2]

  1. num = 1: нет в known → добавляем.
  2. num = 1: уже есть в known → возвращаем True.
Результат: True (дубликат найден сразу).:eek:
👍21 🤔6 😢4
Спасибо за просмотр, надеюсь, что всё понятно объяснил. :coffee:
👍2
Здравствуйте, переместите тему в соответствующий раздел чтобы не засорять этот. К слову таких разборов миллион на ютубе и литкоде просто если нажать на кнопку "решения" в каждой задаче. Сам литкод и его задачи примитивные по сравнению с Codeforces откуда берут реальные задачи в фаанге. Спасибо за статью и удачи в начинаниях)
👍4 ❤️1
ОтветKaka0

Здравствуйте, переместите тему в соответствующий раздел чтобы не засорять этот. К слову таких разборов миллион на ютубе и литкоде просто если нажать на кнопку "решения" в каждой задаче. Сам литкод и его задачи…

Спасибо за информацию, даже не знал про этот сайт. А как можно переместить тему?
👍4
ОтветKroy22

Спасибо за информацию, даже не знал про этот сайт. А как можно переместить тему?

Тему переместил в соответствующий раздел, спасибо за материал. В следующий раз публикуйте темы сразу в соответствующих разделах.
👍3

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.