栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode之广度优先系列算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode之广度优先系列算法

文章目录
  • leetcode之广度优先遍历系列算法
    • 1.课程表
      • 1.1广度优先遍历

leetcode之广度优先遍历系列算法 1.课程表 1.1广度优先遍历
func canFinish(numCourses int, prerequisites [][]int) bool {
    var (
        edges = make([][]int, numCourses)  //邻接表
        indeg = make([]int, numCourses)  //入度数组
    )

    for i :=0;i
        edges[prerequisites[i][1]] = append(edges[prerequisites[i][1]], prerequisites[i][0])
        indeg[prerequisites[i][0]]++  //求课的初始入度值
    }

    q := []int{}
    for i := 0; i < numCourses; i++ {
        if indeg[i] == 0 {
            q = append(q, i)  //所有入度为0的课入列
        }
    }
    
    count :=0
    for len(q) > 0 {
        u := q[0]
        q = q[1:]
        count++  //选课数+1
       for i :=0;i
           indeg[edges[u][i]]-- // 依赖它的后续课的入度-1
           if  indeg[edges[u][i]]==0{ // 如果因此减为0,入列
              q=append(q, edges[u][i])
           }
       }  
    }
    return count == numCourses// 选了的课等于总课数,true,否则false
}





转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号