找到最终的安全状态 深搜

传送门

  https://leetcode-cn.com/problems/find-eventual-safe-states/

题意

思路

AC代码

import java.util.ArrayList;
import java.util.List;

class Solution {



    public List<Integer> eventualSafeNodes(int[][] graph) {
        int n = graph.length;
        int[] color = new int[n];
        List<Integer> res = new ArrayList<>();
        for(int i=0;i<n;i++){
            if(dfs(graph,color,i)){
                res.add(i);
            }
        }
        return res;
    }

    private boolean dfs(int[][] graph, int[] color, int x) {
        if(color[x] == 1){
            return false;
        }else if(color[x] == 2){
            return true;
        }
        color[x] = 1;
        for (int y : graph[x]) {
            if(dfs(graph,color,y) == false){
                return false;
            }
        }
        color[x] = 2;
        return true;
    }
}

 

  

 

  

  

一点一点积累,一点一点蜕变!
原文地址:https://www.cnblogs.com/qq2210446939/p/15102295.html