2021-10-27:课程表。你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。力扣207。

福大大 答案2021-10-27:

拓扑排序。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
numCourses := 2
prerequisites := [][]int{{1, 0}}
ret := canFinish1(numCourses, prerequisites)
fmt.Println(ret)
} // 一个node,就是一个课程
// name是课程的编号
// in是课程的入度
type Course struct {
name int
in int
nexts []*Course
} func NewCourse(n int) (res *Course) {
res = &Course{}
res.name = n
res.in = 0
res.nexts = make([]*Course, 0)
return
} func canFinish1(numCourses int, prerequisites [][]int) bool {
if len(prerequisites) == 0 {
return true
}
// 一个编号 对应 一个课的实例
nodes := make(map[int]*Course)
for _, arr := range prerequisites {
to := arr[0]
from := arr[1] // from -> to
if _, ok := nodes[to]; !ok {
nodes[to] = NewCourse(to)
}
if _, ok := nodes[from]; !ok {
nodes[from] = NewCourse(from)
}
t := nodes[to]
f := nodes[from]
f.nexts = append(f.nexts, t)
t.in++
}
needPrerequisiteNums := len(nodes)
//Queue<Course> zeroInQueue = new LinkedList<>();
zeroInQueue := make([]*Course, 0)
for _, node := range nodes {
if node.in == 0 {
zeroInQueue = append(zeroInQueue, node)
}
}
count := 0
for len(zeroInQueue) > 0 {
//Course cur = zeroInQueue.poll();
cur := zeroInQueue[len(zeroInQueue)-1]
zeroInQueue = zeroInQueue[0 : len(zeroInQueue)-1]
count++
for _, next := range cur.nexts {
next.in--
if next.in == 0 {
zeroInQueue = append(zeroInQueue, next)
}
}
}
return count == needPrerequisiteNums
}

执行结果如下:


左神java代码

2021-10-27:课程表。你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisi的更多相关文章

  1. Noip模拟84 2021.10.27

    以后估计都是用\(markdown\)来写了,可能风格会有变化 T1 宝藏 这两天老是会的题打不对,还是要细心... 考场上打的是维护\(set\)的做法,但是是最后才想出来的,没有维护对于是没有交. ...

  2. 2021.10.27考试总结[冲刺NOIP模拟17]

    T1 宝藏 发现每个数成为中位数的长度是关于权值单调的.线段树二分判断是否合法,单调指针扫即可. 考场上写了二分,平添\(\log\). \(code:\) T1 #include<bits/s ...

  3. 日常Java 2021/10/27

    java HashMap HashMap是一个散列表,它存储的内客是键值对(key-value)映射.HashMap实现了Map.接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许 ...

  4. Noip模拟77 2021.10.15

    T1 最大或 $T1$因为没有开$1ll$右移给炸掉了,调了一年不知道为啥,最后实在不懂了 换成$pow$就过掉了,但是考场上这题耽误了太多时间,后面的题也就没办法好好打了.... 以后一定要注意右移 ...

  5. Noip模拟70 2021.10.6

    T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列, ...

  6. Noip模拟69 2021.10.5

    考场拼命$yy$高精度结果没学好$for$循环痛失$50pts$,当场枯死 以后一定打对拍,要不考后会... T1 石子游戏 首先要知道典型的$NIM$博弈,就是说如果所有堆石子个数的异或和为$0$则 ...

  7. 背水一战 Windows 10 (27) - 控件(文本类): TextBlock

    [源码下载] 背水一战 Windows 10 (27) - 控件(文本类): TextBlock 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBlock 示例 ...

  8. 第15次Scrum会议(10/27)【欢迎来怼】

    一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/27 17:20~17:45,总计25min. 地点 ...

  9. JZOJ 4269. 【NOIP2015模拟10.27】挑竹签

    4269. [NOIP2015模拟10.27]挑竹签 (File IO): input:mikado.in output:mikado.out Time Limits: 1000 ms  Memory ...

  10. Burp Suite Pro 2021.10 Full (macOS, Linux) -- 查找、发现和利用漏洞

    申明:底层组件来自网络论坛或开源社区的分享,本站所有软件免费分享,仅供学习和测试使用,严禁用于任何商业用途!!! 请访问原文链接:https://sysin.cn/blog/burp-suite-pr ...

随机推荐

  1. vue 作者在2022-2-7起宣布 vue3 正式作为默认版本

    vue 作者在2022-2-7起宣布 vue3 正式作为默认版本 vue 作者尤雨溪在知乎上发布一篇文章,宣布 Vue3 将在 2022 年 2 月 7 日 成为新的默认版本! 并且还在文章中做出了一 ...

  2. DRF_基本使用

    基本使用 视图内 from rest_framework.viewsets import ModelViewSet from app01 import models from app01 import ...

  3. SpringBoot笔记--配置->profile的配置

    profile--动态配置切换 profile配置方式: 使用spring.profile.active=进行激活.properties文件 直接使用一个.yml文件代替多文件配置 使用---分隔符分 ...

  4. MySQL学习(十一)B树与B+树了解

    参考博客:https://www.cnblogs.com/kismetv/p/11582214.html

  5. 使用python-gitlab获取本地gitlab仓库project信息的方法

    代码中有注释,直接看代码 #coding:utf8 #!/usr/bin/env python #@author: 9527 import gitlab import openpyxl import ...

  6. 2023GDKOI总结

    2023GDKOI总结 说明:不是GD选手,只是因为来zsjz集训就顺便参加了GDKOI,不过也不参与GD选手排名. 考前看了看GDKOI2021的题,当时是考了3天,每天4题,而里面只有一道题是我一 ...

  7. Linux RedHat 利用 ISO镜像文件制作本地 yum源

    RedHat 利用ISO镜像文件制作本地yum源 [1]创建iso存放目录和挂载目录 1 [root@desktop ~]# cd /mnt/ 2 [root@desktop mnt]# mkdir ...

  8. 网络调试助手|网络调试助手(CM精装版) V4.1.0 绿色版

    http://www.winwin7.com/soft/16987.html#xiazai 网络调试助手软件功能 1.支持UDP,TCP协议2.支持单播/广播,集成TCP服务器和客户端3.支持ASCI ...

  9. 第三届材料化学与复合材料国际学术会议(MCCM 2022)

    大会官网:http://www.meeting-mccm.org/ 大会时间:2022年12月16-18日 大会地点:中国-珠海 截稿日期:详情见官网(2022年10月14日) 接受/拒稿通知:投稿后 ...

  10. Django笔记十二之defer、only指定返回字段

    本篇笔记为Django笔记系列之十二,首发于公号[Django笔记] 本篇笔记将介绍查询中的 defer 和 only 两个函数的用法,笔记目录如下: defer only 1.defer defer ...