Вычтите 1 из числа, представленного в виде связанного списка
Опубликовано: 19 Сентября, 2022
Учитывая, что заголовок связанного списка представляет собой положительное целое число, задача состоит в том, чтобы напечатать обновленный связанный список после вычитания из него 1.
Примеры:
Input: LL = 1 -> 2 -> 3 -> 4
Output: 1 -> 2 -> 3 -> 3Input: LL = 1 -> 2
Output: 1 -> 1
Подход: Данную проблему можно решить с помощью рекурсии. Выполните следующие шаги, чтобы решить проблему:
- Определите функцию, скажем, subtractOneUtil(Node *head) , которая принимает заголовок связанного списка в качестве аргументов, и выполните следующие шаги:
- Базовый случай: если головной узел связанного списка имеет значение NULL , верните -1 из этого рекурсивного вызова.
- Рекурсивный вызов : Рекурсивный вызов следующего узла связанного списка и пусть значение, возвращаемое этим рекурсивным вызовом, будет заимствовано .
- Если значение заимствования равно -1 , а значение головного узла равно 0 , то значение головного узла обновляется до 9 и возвращается -1 из текущего рекурсивного вызова.
- В противном случае уменьшите значение головного узла на 1 и верните 0 из текущего рекурсивного вызова.
- Вычтите 1 из связанного списка, вызвав вышеуказанную функцию как subtractOneUtil(head) .
- Если связанный список обновлений имеет начальные 0 , переместите указатель заголовка.
- После выполнения вышеуказанных шагов распечатайте обновленный связанный список как результирующий связанный список.
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(N), N — длина данного связанного списка .
Вспомогательное пространство: O(1)