leetcode 第802題-找到最終的安全狀態(tài)

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

package leetcode

func EventualSafeNodes(graph [][]int) []int {
    flag := make([]int, len(graph)+1, len(graph)+1) //遍歷過的標記列表,初始化為0,-1為非安全點,1為安全點
    var list []int
    var deep func(num int) bool
    deep = func(num int) bool {
        if flag[num] == -1 {
            return false
        }
        if flag[num] == 1 {
            return true
        }
        if len(graph[num]) == 0 {
            flag[num] = 1
            return true
        }

        for _, n := range list[0 : len(list)-1] {
            if n == num {
                flag[num] = -1
                return false
            }
        }

        safe := true
        for j := 0; j < len(graph[num]); j++ {
            list = append(list, graph[num][j])
            is := deep(graph[num][j])
            list = list[0 : len(list)-1]
            if !is {
                safe = false
                break
            }
        }
        if safe {
            flag[num] = 1
            return true
        }
        flag[num] = -1
        return false
    }

    var rtn []int
    for i := 0; i < len(graph); i++ {
        list = append(list, i)
        safe := deep(i)
        if safe {
            rtn = append(rtn, i)
        }
        list = list[0 : len(list)-1]
    }
    return rtn
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容