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))
输出结果: