解题思路:
这道题可以用O(n)的时间复杂度来解决,只需要利用两个指针即可,第一个指针用来记录需要插入新的非零值的位置,第二个指针用来找到需要插入的值的位置即可,然后对第二个指针做一次遍历,遍历的过程中第一个指针累加即可。
具体代码如下:
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
ptr = 0 #需要插入的位置的指针
for i, num in enumerate(nums): #i寻找非零值的指针
if num != 0 and ptr == i:
pass
ptr += 1
elif num != 0 and ptr != i:
nums[ptr] = num
nums[i] = 0
ptr += 1
elif num == 0:
pass
这个方法非常高校,提交了之后超过了百分之99的python提交者。