2017-01-08 4 views
-4

問題と私のコードは以下のとおりです。しかし、私はまだ "何も返さず、代わりにnumをインプレースで修正する"というメッセージを受け取ります。誰も私のコードが「インプレース」で計算されていない理由を説明できますか?ありがとう!何も返さず、代わりにnumをインプレースで修正してください

与えられた配列の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

コメント 'return nums'を返し、' #return nums'に変更します –

+0

メッセージには何も返されません。何も返さず、その代わりにnumを修正します。これはあなたのコードを評価するためのシステムですか?それについてどうやって知っているのですか? –

答えて

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] 
関連する問題