diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/403. Frog Jump.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/403. Frog Jump.py" new file mode 100644 index 00000000..ca8e71c9 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/403. Frog Jump.py" @@ -0,0 +1,29 @@ +class Solution: + def canCross(self, stones: List[int]) -> bool: + stone_set = set(stones) + target = stones[-1] + + visited = set() + + def dfs(pos, k): + if pos == target: + return True + + if (pos, k) in visited: + return False + + visited.add((pos, k)) + + for next_k in [k - 1, k, k + 1]: + if next_k <= 0: + continue + + next_pos = pos + next_k + + if next_pos in stone_set: + if dfs(next_pos, next_k): + return True + + return False + + return dfs(0, 0)