Leetcode刷题笔记题解(C++):1306. 跳跃游戏 III

Leetcode刷题笔记题解(C++):1306. 跳跃游戏 III_第1张图片

 

利用BFS的思路,注意标记已经走过的下标,还有两种跳跃的情况

向前走或者向后走。

代码如下:

class Solution {
public:
    bool canReach(vector& arr, int start) {
        if(arr[start]==0)return true;
        queue q;
        vectorused(arr.size());
        q.push(start);
        used[start]=true;
        while(!q.empty()){
            int t=q.front();
            q.pop();
            //    向前跳
            if(t+arr[t]=0&&!used[t-arr[t]]){
                if(arr[t-arr[t]]==0) return true;
                q.push(t-arr[t]);
                used[t-arr[t]]=true;
            }
            
        }
        return false;
    }
};

 

你可能感兴趣的:(Leetcode算法题解,bfs,c++,leetcode,数据结构,算法)