【发布时间】:2017-01-08 21:38:30
【问题描述】:
问题和我的代码如下。但是,我仍然收到一条消息说“不要返回任何东西,而是就地修改 nums”。谁能解释一下为什么我的代码没有“就地”计算?谢谢!
给定一个数组 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
【问题讨论】:
-
明明说“不退货”,那你为什么要退货呢?
-
评论
return nums并将其更改为#return nums -
是什么给出了消息“不要返回任何东西,而是在原地修改nums。”?这是用于评估您的代码的一些系统吗?我们应该怎么知道呢?
-
只要删除return语句,函数就会返回None,这会算作not 'anything'。具有讽刺意味的是,您确实 就地进行了修改,但没有 使用请求的最少操作。每个元素只需要移动一次,因此应该只移动一次。