不要返回任何内容,而是在

时间:2017-01-08 21:38:30

标签: python algorithm list

问题和我的代码如下。但是,我仍然会收到一条消息,说“&34;不要返回任何内容,而是在原地修改nums。”#34;任何人都可以解释为什么我的代码没有计算"就地"请?谢谢!

  

给定一个数组nums,写一个函数将所有0都移动到它的末尾,同时保持非零元素的相对顺序。   例如,给定nums = [0,1,0,3,12],在调用函数后,nums应为[1,3,12,0,0]。

     

注意:   您必须就地执行此操作,而无需复制阵列。   最小化操作总数。

class Solution(object):

    def moveZeroes(self, nums):
        count=0
        for i in range(len(nums)):
            if nums[i]==0:
                a=nums.pop(i)                                   
                nums.append(a)
        return nums

1 个答案:

答案 0 :(得分:0)

nums = [0, 1, 0, 3, 12]

def moveZeroes(nums):
  pos = 0
  for i in range(len(nums)):
    if nums[i]:
      nums[i], nums[pos] = nums[pos], nums[i]
      pos += 1

moveZeroes(nums)
print(nums)

输出:

[1, 3, 12, 0, 0]