#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def moveZeroes(self , nums ):
        # write code here
        ##两种方法
        #方法一:slow指针一直复制fast指针
        #方法二:slow指针和fast指针swap values

        ##方法一
        #init
        if nums == None:
            return nums
        if len(nums) <= 1:
            return nums
        slow = 0
        fast = 0
        #process
        while fast < len(nums):
            fast_val = nums[fast]
            slow_val = nums[slow]
            if fast_val != 0:
                nums[slow] = fast_val
                slow += 1
            fast += 1
        #print ("Slow and fast: ", slow, fast)
        #print ("Ck1 nums: ", nums)

        while slow < len(nums):
            nums[slow] = 0
            slow += 1
        print ("Slow and fast: ", slow, fast)
        print ("Ck2 nums: ", nums)
        
        return nums