#coding=utf-8
'''
Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].
Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.
'''
class Solution(object):
def moveZeroes(self,nums):
count=0
i=0
while i<len(nums):
if nums[i] ==0:
nums.pop(i)
count+=1
continue #这一步很重要,好好思考一下
#这里continue一下,此次的while直接结束,不用执行index+1
#pop之后nums的长度也在减小,索引while循环会结束的
print nums, count
i+=1
return nums+[0]*count
def moveZeroes1(self, nums):
if len(nums)==0:return
count = 0
#count作为非0的个数也是覆盖后的列表的索引,采用覆盖的方法,
#如果遇到非0的数,以count为索引进行nums的覆盖
#最后再将nums[count,len]的元素覆盖为0即可
for i in range(len(nums)):
if nums[i]!=0:
nums[count]=nums[i]
count+=1
for j in range(count,len(nums)):
nums[j]=0
return nums
s=Solution()
print s.moveZeroes([0,0,1])
leetcode 283. Move Zeroes
最新推荐文章于 2024-09-01 11:29:54 发布