一、题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,
同时保持非零元素的相对顺序。
例1:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
1.必须在原数组上操作,不能拷贝额外的数组。
2.尽量减少操作次数。
二、解法
遍历数组,当值为0时,删除当前值,然后在数组末尾加上0
遍历的次数为数组的长度
为什么要设置 i
变量而不直接用 for 循环遍历数组呢?
假设 nums = [1,0,0,12]
,那么 当前
循环删掉 nums[1]=0
,在数组末尾加 0
,
nums = [1,0,12,0]
, 下一次
循环指向 nums[2]
,但是 nums[2]
已经变成了 12
,这样就直接跳过了 0
,没有去判断它
代码如下:
i = 0
for x in range(len(nums)):
if(nums[i]==0):
del nums[i]
nums.append(0)
else:
i+=1
时间 56ms,击败了 99.3%
结语
欢迎关注我的公众号
疯子的Python笔记