Умножение однозначного числа на число, представленное в виде связанного списка
Учитывая связанный список N узлов где каждый узел представляет цифры числа и однозначное число M , задача состоит в том, чтобы умножить список на M на месте и распечатать полученный связанный список.
Примеры:
Input: Linked list: 1 → 2 → 7 → 3 → NULL, M = 3
Output: 3 → 8 → 1 → 9 → NULL
Explanation: The given linked list represents the number 1273. Multiplying 1273 with 3 = 1273*3 = 3819. Hence, the resulting linked list is
3 → 8 → 1 → 9 → NULLInput: Linked list: 9 → 9 → 9 → NULL, M = 2
Output: 1 → 9 → 9 → 8 → NULL
Explanation: The given linked list represents the number 999. Multiplying 999 with 2 = 999*2 = 1998. Hence, the resulting linked list is
1 → 9 → 9 → 8 → NULL
Подход: поскольку нам разрешено реверсировать LL и добавить к нему не более 1 дополнительного узла, идея решения этой проблемы состоит в том, чтобы сначала реверсировать связанный список. Затем пройдите по связанному списку и начните умножать M с каждым узлом, добавляя сгенерированный перенос и обновляя перенос после каждого шага умножения. Снова переверните измененный связанный список и распечатайте полученный список.
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(N)
Вспомогательное пространство: O(1)