python leetcode 403. Frog Jump
阿新 • • 發佈:2018-11-30
與一般DP不同的是 青蛙能跳k-1,k,k+1步三種不同的情況 所以用字典儲存跳到這個石頭上所用的步數
class Solution(object): def canCross(self, stones): """ :type stones: List[int] :rtype: bool """ #maxJumpstep 記錄的是上一次跳過來的步數 if len(stones)<=1: return True elif stones[1]!=1: return False else: maxJumpstep={s:set() for s in stones} maxJumpstep[1].add(1) for s in stones[1:-1]: for j in maxJumpstep[s]: for jump in (j-1,j,j+1): if jump>0 and s+jump in maxJumpstep: maxJumpstep[s+jump].add(jump) return len(maxJumpstep[stones[-1]])>0