leetcode:802. 找到最终的安全状态(dfs)

链接:https://leetcode-cn.com/problems/find-eventual-safe-states/
DFS找到所有能成环的节点。
java代码:

class Solution {
    public List<Integer> eventualSafeNodes(int[][] graph) {
        List<Integer>ans = new ArrayList();
        int [] states = new int [graph.length];//为0表示还没有进行过判断,为1表示为安全的节点,为-1表示不安全
        for(int i = 0;i<graph.length;i++)
        {
            if(states[i]==0)
                dfs(graph,states,i);
            if(states[i]==1)
                ans.add(i);
        }
        return ans;
    }
    private boolean dfs(int[][]graph,int []states,int begin)
    {
        states[begin] = -1;
        boolean flag = true;
        for(int i = 0;i<graph[begin].length;i++)
        {
            if(states[graph[begin][i]]!=0)
                if(states[graph[begin][i]]==1)
                    flag&=true;
                else 
                    flag = false;
            else 
                flag&=dfs(graph,states,graph[begin][i]);
        }
        if(flag)
            states[begin]=1;
        return flag;
    }
}
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 护眼 设计师: 闪电赇
应支付0元
点击重新获取
扫码支付

支付成功即可阅读