← К треку Массивы: 0/107 решено

1001. Проверка симметрии массива

Easy 80 решили
Дан массив целых чисел nums. Верните true, если он читается одинаково слева направо и справа налево: для всех индексов выполняется nums[i] == nums[n − 1 − i]. Иначе верните false.

Примеры:

Вход: [1, 2, 3, 2, 1]
Выход: true
Объяснение: Пары (1,1) и (2,2), центр 3 — массив-палиндром → true.
Вход: [1, 2, 2, 1]
Выход: true
Объяснение: Чётная длина: пары (1,1) и (2,2) → true.
Вход: [1, 2, 3, 4, 5]
Выход: false
Объяснение: Уже первая пара 1 и 5 не совпадает → false.

Ограничения:

1 <= nums.length <= 10^5 -10^9 <= nums[i] <= 10^9
Как сдавать решение. В Python напишите функцию и верните ответ через return. В Java по-прежнему нужен class Solution и return. print и System.out.println не проверяются.

Разбор открыт без подписки

На этой задаче разбор бесплатный: по нему видно, как устроены разборы zedcode. На остальных задачах он открывается по подписке.

Идея. Массив симметричен (палиндром), если каждый элемент слева совпадает с «зеркальным» справа: nums[i] == nums[n − 1 − i] для всех i.

Как решать. Два указателя: left = 0, right = n − 1. Пока left < right, сравнивайте пару. Если хоть одна не совпала — сразу false. Если указатели встретились — все пары совпали, true.

  • Чётная длина: указатели съедутся навстречу, центра не останется.
  • Нечётная длина: средний элемент ни с кем не сравнивается — он сам себе зеркало.
  • По ограничению массив непустой. Один элемент всегда симметричен: цикл не выполнится ни разу.

Пример [1, 2, 3, 2, 1]: пары (1,1) и (2,2), центр 3 → true. У [1, 2, 3, 4, 5] уже первая пара 1 и 5 не совпадает → false.

Сложность. Время O(n), память O(1).

Типичная ошибка. Сравнивать с nums[::-1] работает, но тратит O(n) памяти. На собеседовании ждут два указателя.

Решение от zedcode
def isSymmetric(nums):
    left, right = 0, len(nums) - 1
    while left < right:
        if nums[left] != nums[right]:
            return False
        left += 1
        right -= 1
    return True

Теги:

Массивы Два указателя

Комментарии (0)

Зарегистрируйтесь или войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!