Разбор задачи: Знак произведения массива

Предложенный нами код решения:

 def signFunc(nums):
    """
    Определяет знак произведения всех элементов массива nums.
    :param nums: Список целых чисел
    :return: 1, если произведение положительное; -1, если отрицательное; 0, если произведение равно нулю
    """
    if 0 in nums:
        return 0  # Если есть ноль, произведение будет равно 0
    negative_count = sum(1 for num in nums if num < 0)  # Считаем количество отрицательных чисел
    return -1 if negative_count % 2 != 0 else 1  # Если количество отрицательных чисел нечетное, произведение отрицательное

Заголовок функции

def signFunc(nums):
    """
    Определяет знак произведения всех элементов массива nums.
    """

Функция принимает список целых чисел nums и возвращает:

  • 1, если произведение положительное.
  • -1, если произведение отрицательное.
  • 0, если хотя бы один элемент равен нулю (произведение будет равно нулю).

Проверка наличия нуля

if 0 in nums:
    return 0  # Если есть ноль, произведение будет равно 0

Первым делом функция проверяет, содержит ли массив nums хотя бы один ноль.

  • Если ноль найден, произведение всех элементов однозначно равно нулю, и функция возвращает 0.

Подсчет отрицательных чисел

negative_count = sum(1 for num in nums if num < 0)

Здесь функция подсчитывает, сколько отрицательных чисел есть в массиве nums:

  • Генератор 1 for num in nums if num < 0 пробегается по всем элементам массива.
  • Для каждого отрицательного числа добавляется 1 в суммирующую переменную negative_count.

Определение знака произведения

return -1 if negative_count % 2 != 0 else 1

На этом шаге функция использует свойство произведения чисел:

  • Если количество отрицательных чисел (negative_count) нечетное, то произведение будет отрицательным, и возвращается -1.
  • Если количество отрицательных чисел четное, то произведение будет положительным, и возвращается 1.

Пример работы функции

Ввод: nums = [-1, -2, -3, -4, 3, 2, 1]

  1. Проверка на наличие нуля: нулей нет.
  2. Подсчет отрицательных чисел: negative_count = 4 (числа -1, -2, -3, -4).
  3. Количество отрицательных чисел четное (4 % 2 == 0), значит, результат: 1.

Ввод: nums = [1, 5, 0, 2, -3]

  1. Проверка на наличие нуля: ноль найден, результат: 0.

Ввод: nums = [-1, 1, -1, 1, -1]

  1. Проверка на наличие нуля: нулей нет.
  2. Подсчет отрицательных чисел: negative_count = 3 (числа -1, -1, -1).
  3. Количество отрицательных чисел нечетное (3 % 2 != 0), результат: -1.

 



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