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时,数组索引都发生了变化。这样会导致当前遍历地方数值前后不一致。

posted @ 2021-03-31 20:03  乖张❤  阅读(49)  评论(0)    收藏  举报