Как насчет рекурсивного кода для «Найти ноль», который я написал?Python

Программы на Python
Ответить
Anonymous
 Как насчет рекурсивного кода для «Найти ноль», который я написал?

Сообщение Anonymous »

Вот проблема:

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

Этот код требует линейного времени? Если нет, то следует ли мне писать код более обычным способом, используя два указателя?

Код: Выделить всё

'''Recursively solve the 'Find Zero' problem without a new array created.'''

def Min_Zero(j, nums):
while nums[j] != 0 and j < len(nums)-1:
j += 1
return j

def Min_Not_Zero(i, nums):
while nums[i] == 0 and i < len(nums)-1:
i += 1
return i

# Swap the first zero element with the first non-zero element which is latter than the first zero element
def Swap_Zero(i=0, j=0, nums=[1, 2, 3, 4, 5, 0, 0, 0, 6, 0, 7, 0, 8, 0, 0, 9, 0, 0]):
n = Min_Zero(j, nums)
m = Min_Not_Zero(n, nums)
if m < len(nums)-1 and n < len(nums)-1 and m > n:
nums[m], nums[n] = nums[n], nums[m]
Swap_Zero(m, n, nums = nums)
return nums

Swap_Zero()
Я успешно запустил код. Это проверено.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ve-written
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»