北美程序员面试干货

LeetCode 283 [Move Zeroes]

2016-08-01  本文已影响40人  Jason_Yuan

原题

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

样例
给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].

解题思路

完整代码

# method 1
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        pos = 0  # position of "0" starts at
        for i in xrange(len(nums)):
            if nums[i] != 0:
                nums[i], nums[pos] = nums[pos], nums[i]
                pos += 1

# method 2
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        if not nums:
            return None
        
        Zero, NonZero = 0, 0
        while NonZero < len(nums):
            if nums[NonZero] == 0:
                NonZero += 1
                continue
            else:
                print nums[Zero], nums[NonZero]
                nums[Zero], nums[NonZero] = nums[NonZero], nums[Zero]

            Zero += 1
            NonZero += 1
上一篇下一篇

猜你喜欢

热点阅读