Python活力练习Day18

Day18:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序

说明:

  1.必须在原数组上操作,不能拷贝额外的数组。2.尽量减少操作次数。

#采取递归同时运用一个指针

#不知道为什吗力扣里面的递归怎么费事一直错误???

  eg: input :nums = [0,1,0,3,12]

    output:nums = [1,3,12,0,0]

 1 def moveZeroes(nums):
 2     n = nums.count(0)  #记录列表中0元素的个数
 3     cur = 0  #相当于一个指针
 4     while cur < len(nums) - 1:
 5         if nums[cur] == 0:
 6             nums[cur], nums[cur + 1] = nums[cur + 1], nums[cur]
 7         cur += 1
 8 
 9     if nums.index(0) != len(nums) - n:  #如果元素0第一个出现的位置不在倒数第N个(N是元素0的个数),那么就一直遍历。
10         nums = moveZeros(nums)
11     return nums
12 
13 if __name__ == "__main__":
14     
15     print(moveZeroes(nums))

输出结果:

原文地址:https://www.cnblogs.com/xiaodangdang/p/12132065.html