当前位置: 首页 > wzjs >正文

2017网站开发语言阿里巴巴网站建设

2017网站开发语言,阿里巴巴网站建设,制作商业网站,网站建设有那几个类型题目: 这个学期必须选修numCourses门课程,记为0到numCourse-1 在选修某些课程之前需要一些先修课程。先修课程按数组prerequisites给出,其中prerequisites[i] [ai, bi],表示如果要学习课程ai,则必须先学习课程b1。 例如&#…

题目:

这个学期必须选修numCourses门课程,记为0到numCourse-1

在选修某些课程之前需要一些先修课程。先修课程按数组prerequisites给出,其中prerequisites[i] = [ai, bi],表示如果要学习课程ai,则必须先学习课程b1。

例如,先修课程对[0,1]表示:想要学习课程0,需要先完成课程1

请判断是否可能完成所有课程的学习?如果可以,返回True,否则,返回False

 


 


方法一:深度优先搜索

以出度为0进行优先搜索 

如果某一门课程的出度为0表示为相对高阶的课程,出度不为0表示它一定是其他某些课程的先修课程,由浅入深,优先寻找高阶的课程,引入三个状态,依次寻找高阶课程。并将连接它的低阶课程出度减去1,为0后即入栈。依次进行。栈的顺序是先入后出,所以高阶课程是后学习的

import collectionsclass Solution:def canFinish(self, numCourses, prerequisites):""":type numCourses: int:type prerequisites: List[List[int]]:rtype: bool"""edges=collections.defaultdict(list)#存储课程的依赖关系visited=[0]*numCourses #记录访问状态0:未访1:正在访问(递归栈中)2:已访问完成result=[]#存储拓扑排序的结果self.valid=True#表示是否可以完成所有课程,初始化为 Truefor info in prerequisites:edges[info[1]].append(info[0])#将 (b -> a) 关系存入邻接表def dfs(u):  #遍历 u 及其所有依赖课程if not self.valid: #如果 self.valid 变为 False,则直接返回return visited[u]=1 #状态设为1for v in edges[u]:if visited[v]==0: #如果 v 未访问(visited[v] == 0),递归调用dfs(v)if not self.valid:returnelif visited[v]==1: #如果 v 正在访问(visited[v] == 1),说明检测到环self.valid=Falsereturnvisited[u]=2result.append(u)for i in range(numCourses): #遍历 numCourses 中的每个课if self.valid and visited[i]==0: #如果 i 未被访问,并且为Truedfs(i)return self.valid

 时间复杂度:O(m+n)n 为课程数,m 为先修课程的要求数。

空间复杂度:O(m+n)需要存储成邻接表的形式,空间复杂度为 O(n+m)。在深度优先搜索的过程中,我们需要最多 O(n) 的栈空间(递归)进行深度优先搜索,因此总空间复杂度为 O(n+m)


方法二:广度优先搜索

 新建一个数组,课程序号作为索引,先修课程的数目入度作为值,入度为0表示先修课程已经完成,或者没有先修课程,现在可以学习这门课程。新建一个队列,将当前可以学习的课程即入度值为0的课程,加入队列中。先学习C1,则以C1为入度的课程值可以减1,C3和C8的入度值减1,此时C8的值为0,将其加入带学习的对列。开始学习C2,C2学习完后,C3,C5减去1,C3,C5的入度为0,加入待学习的对列。重复此过程,将入度为0 的课程加入待学习的队列,直到所有课程学习结束。

import collectionsclass Solution:def canFinish(self, numCourses, prerequisites):""":type numCourses: int:type prerequisites: List[List[int]]:rtype: bool"""edges=collections.defaultdict(list)#构建一个默认字典,键是课程编号,值是该课程的后继课程列表,defaultdict,确认访问不存在的键时不会报错,而是自动创建一个空列表indeg=[0]*numCourses #存储每门课程的入度,即该课程需要的先修课程的数量,初始化为0for info in prerequisites:#遍历课程数组,他是二维的【【a,b】】,学习 a 需要先学习 bedges[info[1]].append(info[0]) #b->aindeg[info[0]]+=1 #a 的入度 +1q=collections.deque([u for u in range(numCourses) if indeg[u]==0])#入度为 0 的节点入队visited=0 #记录访问的课程数while q:visited+=1 # # 每出队一个节点,表示完成了一门课程u=q.popleft()  #取出队首节点for v in edges[u]:# 遍历所有相邻节点indeg[v]-=1 # 依赖于 u 的课程入度 -1if indeg[v]==0:#如果某门课程入度变为 0,说明可以学习q.append(v) # 加入队列return visited==numCourses ## 如果所有课程都能被访问,说明可以完成所有课程

 时间复杂度:O(m+n)n 为课程数,m 为先修课程的要求数。

空间复杂度:O(m+n)需要存储成邻接表的形式,空间复杂度为 O(n+m)。在深度优先搜索的过程中,我们需要最多 O(n) 队列空间迭代进行广度优先搜索,因此总空间复杂度为 O(n+m)

源自力扣官方题解


文章转载自:

http://IdDXrXNi.Lfdzr.cn
http://4j1FBL9o.Lfdzr.cn
http://uH8mgbJh.Lfdzr.cn
http://4cwGSSg7.Lfdzr.cn
http://e0wAS2ec.Lfdzr.cn
http://TepM76Yb.Lfdzr.cn
http://34K28KPC.Lfdzr.cn
http://cj317ryi.Lfdzr.cn
http://IZVmJDhJ.Lfdzr.cn
http://i8owCUiL.Lfdzr.cn
http://LK086zBZ.Lfdzr.cn
http://RFsvsUcx.Lfdzr.cn
http://UncGjFXt.Lfdzr.cn
http://UZVqPh31.Lfdzr.cn
http://UWA0rKbL.Lfdzr.cn
http://bkLNisBw.Lfdzr.cn
http://do7VM1NK.Lfdzr.cn
http://6eUsSjhm.Lfdzr.cn
http://jU95Mtaj.Lfdzr.cn
http://T3keRrK3.Lfdzr.cn
http://63qYaWUM.Lfdzr.cn
http://Kwy1Uty2.Lfdzr.cn
http://lMc0Fo26.Lfdzr.cn
http://dby9ShsM.Lfdzr.cn
http://6GpHqBdf.Lfdzr.cn
http://f2YRny7E.Lfdzr.cn
http://3ykONdRb.Lfdzr.cn
http://Q6zoEM8I.Lfdzr.cn
http://bMDeqTDC.Lfdzr.cn
http://V7BdsvBq.Lfdzr.cn
http://www.dtcms.com/wzjs/644867.html

相关文章:

  • 陕西咸阳做网站的公司客户说做网站没效果
  • 外贸公司网站怎么查有做网站的公司
  • 昭通建网站3d溜溜网室内设计图库
  • 什么网站有教做衣服视频的微信 wordpress
  • 安县建设局网站做图书网站赚钱吗
  • 工作室 网站备案网站域名被注册
  • 个人网站建设的背景网站评论管理怎么做
  • 秦皇岛建设局网站6wordpress制作评论
  • 和淘宝同时做电商的网站哈尔滨小程序建设
  • 免费网站怎么建正规网站优化推广
  • 便利的响应式网站建设杭州 网站外包
  • 动易网站风格免费下载管理系统前端模板
  • 二手书籍交易网站开发方式邯郸企业做网站方案
  • 无障碍 网站 怎么做wordpress 新手教程
  • 高端品牌网站建设案例攻略做的比较好的网站
  • 做h5的网站哪个好深圳一医疗公司给员工放假10个月
  • 桃源网站建设建立网站原理
  • 网站开发页面如何做购物网站推广
  • 在线制作钓鱼网站源码深圳建站服务中心
  • 最专业的医疗网站建设视频制作软件下载安装
  • 企业网站建设流程概述健康企业建设
  • 公司制作网站价格做外贸做什么网站好
  • 淘宝的网站怎么做的好处wordpress使用自己的模板
  • 制作公司网页思路怎么写福州seo按天收费
  • 贵州城乡住房和建设厅网站淘客网站怎么做返利
  • 四川建设厅招投标官方网站logo查询有没有注册过
  • 网站做会员系统php网站开发怎么样
  • 网站建设费 科研 设备费互联网保险平台好干吗
  • 班级网站建设策划书网站建设销售实习报告
  • 做国际物流需要自己的网站吗东莞昨天发生的重大新闻