zoukankan      html  css  js  c++  java
  • 【leetcode】1306. Jump Game III

    题目如下:

    Given an array of non-negative integers arr, you are initially positioned at start index of the array. When you are at index i, you can jump to i + arr[i] or i - arr[i], check if you can reach to any index with value 0.

    Notice that you can not jump outside of the array at any time.

    Example 1:

    Input: arr = [4,2,3,0,3,1,2], start = 5
    Output: true
    Explanation: 
    All possible ways to reach at index 3 with value 0 are: 
    index 5 -> index 4 -> index 1 -> index 3 
    index 5 -> index 6 -> index 4 -> index 1 -> index 3 
    

    Example 2:

    Input: arr = [4,2,3,0,3,1,2], start = 0
    Output: true 
    Explanation: 
    One possible way to reach at index 3 with value 0 is: 
    index 0 -> index 4 -> index 1 -> index 3
    

    Example 3:

    Input: arr = [3,0,2,1,2], start = 2
    Output: false
    Explanation: There is no way to reach at index 1 with value 0.

    Constraints:

    • 1 <= arr.length <= 5 * 10^4
    • 0 <= arr[i] < arr.length
    • 0 <= start < arr.length

    解题思路:DFS。从起点开始,每次把可以到达的位置标记成可达到即可。

    代码如下:

    class Solution(object):
        def canReach(self, arr, start):
            """
            :type arr: List[int]
            :type start: int
            :rtype: bool
            """
            reach = [0] * len(arr)
            queue = [start]
            reach[start] = 1
            while len(queue) > 0:
                inx = queue.pop(0)
                if arr[inx] == 0 and reach[inx] == 1:
                    return True
                next_inx = inx + arr[inx]
                if next_inx >= 0 and next_inx < len(arr) and reach[next_inx] == 0:
                    queue.append(next_inx)
                    reach[next_inx] = 1
                next_inx = inx - arr[inx]
                if next_inx >= 0 and next_inx < len(arr) and reach[next_inx] == 0:
                    queue.append(next_inx)
                    reach[next_inx] = 1
            return False
  • 相关阅读:
    1462. 课程安排 IV
    最全的CSS浏览器兼容问题【FF与IE】
    this&super两个关键字的意义和用法
    Javascript this 的一些总结
    JS-封装类或对象的最佳方案
    背景色透明,里面内容(图片、文字)不透明
    css3 前端开发
    html5游戏之Box2d物理引擎集成
    Box2d引擎之元素
    西天取经第一步——制作自己的HTML5游戏
  • 原文地址:https://www.cnblogs.com/seyjs/p/12150551.html
Copyright © 2011-2022 走看看