Программа курса:

1.1 - Часть 1 1.2 - Часть 2 1.3 - Часть 3 1.4 - Часть 4 1.5 - Часть 5 1.6 - Часть 6 1.7 - Часть 7 1.8 - Часть 8 1.9 - Часть 9 1.10 - Часть 10 1.11 - Часть 11 1.12 - Часть 12
2.1 - Часть 1 2.2 - Часть 2 2.3 - Часть 3 2.4 - Часть 4 2.5 - Часть 5 2.6 - Часть 6
3.1 - Часть 1

Разбор задачи: Удаление элемента

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

def remove_element(nums, val):
    """
    Удаляет все вхождения val из nums на месте и возвращает количество элементов, не равных val.
    """
    k = 0  # Указатель для записи элементов, не равных val
    for num in nums:
        if num != val:
            nums[k] = num
            k += 1
    return k

Шаг 1. Определение задачи

Задача функции состоит в том, чтобы удалить все вхождения заданного значения val из списка nums "на месте" (без создания нового списка) и вернуть количество элементов, которые не равны val.

Условия:

  1. После работы функции первые k элементов списка nums должны содержать элементы, не равные val.
  2. Остальная часть списка (после k) не важна для решения задачи.

Шаг 2. Разбор кода

1. k = 0:

  • Инициализация переменной k. Она указывает на позицию в списке nums, куда будет записан следующий элемент, не равный val.
  • На момент начала работы k = 0.

2. Цикл for num in nums:

  • Цикл проходит по каждому элементу в массиве nums.

3. Условие if num != val:

  • Проверяет, является ли текущий элемент num не равным val.
  • Если условие выполняется:
    • Текущий элемент num записывается в позицию k в массиве nums:

      nums[k] = num
      
    • Значение k увеличивается на 1:

      k += 1
      
  • Если элемент равен val, он просто пропускается.

4. Возвращаемое значение k:

  • После завершения цикла k содержит количество элементов, которые не равны val.
  • Первые k элементов в списке nums теперь содержат корректные элементы.

Шаг 3. Пример выполнения

Входные данные:

nums = [3, 2, 2, 3]
val = 3
  1. Инициализация:

    k = 0
    
  2. Первый элемент (num = 3):
    • Проверка: num != val (3 != 3) → ложь.
    • Этот элемент пропускается, k остаётся 0.
  3. Второй элемент (num = 2):
    • Проверка: num != val (2 != 3) → истина.
    • Элемент записывается в позицию nums[k] (то есть nums[0]):

      nums[0] = 2
      
    • k увеличивается на 1:

      k = 1
      
  4. Третий элемент (num = 2):
    • Проверка: num != val (2 != 3) → истина.
    • Элемент записывается в позицию nums[k] (то есть nums[1]):

      nums[1] = 2
      
    • k увеличивается на 1:

      k = 2
      
  5. Четвёртый элемент (num = 3):
    • Проверка: num != val (3 != 3) → ложь.
    • Этот элемент пропускается, k остаётся 2.

Итоговые данные:

  • Массив: [2, 2, _, _] (после первых k элементов значения не важны).
  • Возвращаемое значение: k = 2.

 

Перейти к следующему шагу

Возникли вопросы при прочтении лекции? Задайте вопрос в комментариях

Комментарии