原題
給一個數組 nums 寫一個函數將 0 移動到數組的最后面,非零元素保持原數組的順序
樣例
給出 nums = [0, 1, 0, 3, 12], 調用函數之后, nums = [1, 3, 12, 0, 0].
解題思路
- 第一個方法是記錄一個指針指向0,每次swap的時候更新指向零的指針
- 第二個方法是兩個指針,一個指針指向零,一個指針指向非零
完整代碼
# 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