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
  • 相关阅读:
    c语言输入一个字符串,统计其字母,数字和其他字符的个数,并以柱状图输出
    c语言中的#ifdef和#ifndef
    宏定义#define
    c语言中的register int
    android SDK 更新的几个网址
    android studio启动不进行fetching Android sdk compoment information
    android eclipse ADT 安装maven插件失败
    Jsp 的映射
    Jsp 九大隐式对象
    Jsp 乱码处理
  • 原文地址:https://www.cnblogs.com/seyjs/p/12150551.html
Copyright © 2011-2022 走看看