leetcode-半ば動的計画-55。ジャンプゲーム

71.47パーセントをmycode

アイデア:

それが最後に到達したい場合は、n個に到達するために、後方Anjiuことができ、あなたは次のような状況を持つことができます

1)N-1に、この位置は、少なくともステップを取ることができます

2)N-2に、この位置は、少なくとも2つのステップを取ることができます

3)N-3に達し、この位置は、少なくとも3つのステップを取ることができます

....

 emmmm ...この方法に従って機能を書きたいと思っていた、我々は実行するためにどこにも見つかりませんでした。私はちょうど、数は一瞬に等しいより大きい逆さまリストをあげるよ、彼は数に到達することができますが、この数は到達することが一時的にできないときに、私はそれが必要との次のステップに番号を追加する必要があります

クラス溶液(オブジェクト):
     DEF canJump(自己、NUMS):
         "" " タイプNUMS:リスト[INT] 
        :RTYPE:BOOL 
        """ 
        NUMS [:] =のNUMS [:: - 1 ] 
        長さ = LEN(NUMS)
        ステップ = 1
          I における範囲(1 、長さ):
             もし NUMS [i]が> = ステップ:
                ステップ 1 =
                 続ける
            
                ステップ + = 1つの
         戻りステップ== 1

 

参考:

私はほとんど違いに語った:私の目標 - 常に距離を測定するために、彼の目標は - 先を変更します

クラスのソリューション(オブジェクト):
     デフcanJump(自己、NUMS):
         "" " タイプNUMS:リスト[INT] 
        :RTYPE:ブール
        """ 
        もし ない NUMS または LEN(NUMS)== 1:返す = LEN( NUMS) - 1
         のための I における範囲(LEN(NUMS)-2、-1、-1 ):
             もし NUMS [I]> = DES - I:
                DES = 私は
         戻りデ== 0

 

おすすめ

転載: www.cnblogs.com/rosyYY/p/10978792.html