2016-10-26 8 views
1

lintcodeのPythonでの問題を解決しました。 Pythonコードでは、4つの要素しかないリストを定義し、繰り返し式に従って最後の3つの要素を更新するためにループを実行しましたが、送信が失敗し、「メモリ制限を超過しました」と言われました。コードは次のとおりです。Lintcodeのペイントフェンス - メモリ制限を超えるPythonソリューション

class Solution: 
    # @param {int} n non-negative integer, n posts 
    # @param {int} k non-negative integer, k colors 
    # @return {int} an integer, the total number of ways 
    def numWays(self, n, k): 
     # Write your code here 
     table = [0, k, k*k, 0] 

     if n <= 2: 
      return table[n] 

     # recurrence equation 
     # table[posts] = (color - 1) * (table[posts - 1] + table[posts - 2]) 
     for i in range(3, n + 1): 
      table[3] = (k - 1) * (table[1] + table[2]) 
      table[1], table[2] = table[2], table[3] 

     return table[3] 

このコードでは間違ったものは見つかりませんでした。誰かが私にそれを理解するのを助けることができますか?

+0

「k = 1」の場合、0を返します。 – LittleQ

+0

ありがとうございます。私はこの行を追加してテストに合格しましたが、これは実際の解決策ではないと思います。なぜなら、k = 2で同じ数のnをテストすると、まだメモリ限界を超えています。 – JoshuaW1990

答えて

1

rangeの代わりにxrangeを使用してください。詳細は、xrangeを参照してください。

+0

ありがとうございます。それでおしまい! – JoshuaW1990

関連する問題