539. 移动零(两根指针)

539. 移动零

中文English

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序

样例

例1:

输入: nums = [0, 1, 0, 3, 12],
输出: [1, 3, 12, 0, 0].

例2:

输入: nums = [0, 0, 0, 3, 1],
输出: [3, 1, 0, 0, 0].

注意事项

1.必须在原数组上操作
2.最小化操作数

    输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param nums: an integer array
    @return: nothing
    """
    def moveZeroes(self, nums):
        # write your code here
        #同向型双指针,第一个指针移动,循环赋值,第二个指针移动非0位置,循环给值,最后根据第一个指针,循环赋0
        left, right = 0, 0 
        l = len(nums)
        
        while right < l:
            if nums[right] != 0:
                nums[left] = nums[right]
                left += 1 
            right += 1 
        
        #此时left已经移动到非0的位置,right移动到最右边
        while left < l:
            nums[left] = 0 
            left += 1 
        
        return nums
        

 

上一篇:ZigZag Conversion(C++字形变换)


下一篇:每日leetcode-数组-539. 最小时间差