LeetCode 283题 移动零(21.3.31)
LeetCode 283题 移动零
题目描述:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
涉及内容:数组 双指针
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
要求:必须在原数组上进行操作,不能拷贝额外的数组
思路:
先初始化一个标记符号k
然后遍历一遍数组,将值不为0的数值按照0开始更新到数组最前面(以此来保证相对顺序
之后再遍历k到len(A),将这些数组区域直接赋予0即可
提交结果:

完整代码:
A=[0,1,0,3,12]
index=0
for i in A:
if i !=0:
A[index]=i
index+=1
for j in range(index,len(A)):
A[j]=0
print(A)
总结:
在这个解法之前,我本身想的是直接循环一遍数组,如果为0 则直接去掉这个索引,并在末尾填上
但是这代码问题在于,每次pop和append时,数组索引都发生了变化。这样会导致当前遍历地方数值前后不一致。
浙公网安备 33010602011771号