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

个人可以建立网站吗seo外包

个人可以建立网站吗,seo外包,上海seo优化公司,互联网是什么工作文章目录 Parallel Courses III 并行课程 III问题描述:分析代码拓扑 Tag Parallel Courses III 并行课程 III 问题描述: 给你一个整数 n ,表示有 n 节课,课程编号从 1 到 n 。同时给你一个二维整数数组 relations ,其…

文章目录

  • Parallel Courses III 并行课程 III

Parallel Courses III 并行课程 III

问题描述:

给你一个整数 n ,表示有 n 节课,课程编号从 1 到 n 。同时给你一个二维整数数组 relations ,其中 r e l a t i o n s [ j ] = [ p r e v C o u r s e j , n e x t C o u r s e j ] relations[j] = [prevCourse_j, nextCourse_j] relations[j]=[prevCoursej,nextCoursej] ,表示课程 p r e v C o u r s e j prevCourse_j prevCoursej 必须在课程 n e x t C o u r s e j nextCourse_j nextCoursej 之前 完成(先修课的关系)。同时给你一个下标从 0 开始的整数数组 time ,其中 t i m e [ i ] time[i] time[i] 表示完成第 ( i + 1 ) (i+1) (i+1) 门课程需要花费的 月份 数。

请你根据以下规则算出完成所有课程所需要的 最少 月份数:

如果一门课的所有先修课都已经完成,你可以在 任意 时间开始这门课程。
你可以 同时 上 任意门课程 。
请你返回完成所有课程所需要的 最少 月份数。

注意:测试数据保证一定可以完成所有课程(也就是先修课的关系构成一个有向无环图)。

1 < = n < = 5 ∗ 1 0 4 0 < = r e l a t i o n s . l e n g t h < = m i n ( n ∗ ( n − 1 ) / 2 , 5 ∗ 1 0 4 ) r e l a t i o n s [ j ] . l e n g t h = = 2 1 < = p r e v C o u r s e j , n e x t C o u r s e j < = n p r e v C o u r s e j ! = n e x t C o u r s e j 所有的先修课程对 [ p r e v C o u r s e j , n e x t C o u r s e j ] 都是互不相同的。 t i m e . l e n g t h = = n 1 < = t i m e [ i ] < = 1 0 4 先修课程图是一个有向无环图 1 <= n <= 5 * 10^4\\ 0 <= relations.length <= min(n * (n - 1) / 2, 5 * 10^4)\\ relations[j].length == 2\\ 1 <= prevCourse_j, nextCourse_j <= n\\ prevCourse_j != nextCourse_j\\ 所有的先修课程对 [prevCourse_j, nextCourse_j] 都是 互不相同 的。\\ time.length == n\\ 1 <= time[i] <= 10^4\\ 先修课程图是一个有向无环图 1<=n<=51040<=relations.length<=min(n(n1)/2,5104)relations[j].length==21<=prevCoursej,nextCoursej<=nprevCoursej!=nextCoursej所有的先修课程对[prevCoursej,nextCoursej]都是互不相同的。time.length==n1<=time[i]<=104先修课程图是一个有向无环图

分析

该问题的复杂性并不大,是最简单的拓扑问题

就是必须要有一个固定的顺序来依次的访问,每个课程。问题中也提到不会存在环,而且是一个有向无环图

同时可以同时学习多门课程,相比较之前的一个问题中,要求一个学期只能选k个课程,条件更加宽松。

所以按照拓扑排序的思路来处理,就是需要构建一个图,图无非就是邻接表或者是邻接矩阵。

但是由于问题的规模限制,邻接表是一个比较合适的选择。

然后进行拓扑排序,同时用 f [ i ] f[i] f[i] 记录到达课程i时的最晚时间,而目标是完成所有课程的时候,需要的最少时间,所以要用 a n s ans ans记录每个课程的最晚结束时间

时间复杂度 O ( M + N ) O(M+N) O(M+N)

空间复杂度 O ( M + N ) O(M+N) O(M+N)

代码

拓扑

class Solution {public int minimumTime(int n, int[][] relations, int[] time) {int[] indeg = new int[n+1];List<Integer>[] g = new ArrayList[n+1];for(int i=1;i<=n;i++){g[i] = new ArrayList();}for(int[] re: relations){int from = re[0],to = re[1];indeg[to]++;g[from].add(to);} Queue<Integer> queue = new LinkedList();for(int i=1;i<=n;i++){if(indeg[i]>0) continue;queue.offer(i);}int[] f = new int[n+1];int ans =0;while(!queue.isEmpty()){int idx = queue.poll(); int end = f[idx]+ time[idx-1];ans = Math.max(ans,end);for(int nx: g[idx]){f[nx]= Math.max(f[nx],end);indeg[nx]--;if(indeg[nx]==0){queue.offer(nx);}}} return ans;}
}

时间复杂度 O ( M + N ) O(M+N) O(M+N)

空间复杂度 O ( M + N ) O(M+N) O(M+N)

Tag

Array

Graph

Topological Sort

http://www.tj-hxxt.cn/news/123870.html

相关文章:

  • 襄阳商城网站建设seo优化方案案例
  • 高中生自己做网站如何做到精准客户推广
  • dede怎么做音乐网站职业技能培训机构
  • 哈尔滨市建设网站微博推广方案
  • 好网站有没有线上推广费用
  • 工 投标做哪个网站好谷歌商店paypal官网下载
  • 自己动手建设公司门户网站百家号关键词排名
  • 深圳专业网站建设网站制作8年专注沧州百度推广公司
  • 网站开发 男生百度广告代理商查询
  • p2p网站开发的流程图百度账号个人中心
  • 做网站模板哪里买网站设计公司有哪些
  • 网站通栏怎么做推广任务发布平台app
  • 彩票网站代理怎么做网络营销推广微信hyhyk1效果好
  • 如何做自己的淘宝客网站公众号排名优化
  • 北京网站制作公司哪家好附近的电脑培训班在哪里
  • c网站开发案例详解代码淘宝站外引流推广方法
  • flash xml网站模板高端婚恋网站排名
  • 深圳松岗网站建设2022近期重大新闻事件10条
  • 怎么搭建自己的网页seo网站优化课程
  • web应用开发要学什么seo排名优化
  • 怎么建设咨询网站地推平台去哪里找
  • 衡水市住房和城乡建设局网站网站流量数据分析
  • 六一儿童节网站制作竞价排名什么意思
  • 广州市住房和城乡建设委员会网站6seo资料网
  • 成都百度网站排名优化seo裤子的关键词首页排名有哪些
  • 在百度上做个网站要多少钱网站排名seo
  • 厦门海沧建设局网站新媒体营销推广方案
  • 美食网站首页怎么做百度广告买下的订单在哪里找
  • 做word文档什么网站好sem
  • 网站开发需要多少钱点评列举五种网络营销模式