题目描述:将数组中所有0都放置在数组的末端,且保持前面非零数的顺序不变
思路:
1、我自己想到的思路:指定两个指针,一个指向最前面的零,一个走在前面指向非零,不断交换元素则可以到达最后,这种的平均复杂度不超过O(n)
代码:
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
pre = 0
nxt = 1
while pre < len(nums)-1 and nxt < len(nums):
if nums[pre] == 0:
while nums[nxt] == 0 and nxt< len(nums)-1:
print nxt
nxt += 1
nums[pre] = nums[nxt]
nums[nxt] = 0
nxt += 1
pre += 1
2、是官方的解答,但我觉得不太行,就是分为两步,一步是将非零元素放到前面的位置,然后后面剩下的位置用0来补全,我觉得这种想法非常一般。嗯。