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

泸州网站建设衡水seo培训

泸州网站建设,衡水seo培训,网站后台管理程序下载,椒江网站建设578做网站文章目录 题目方法一:bfs方法二:dfs 题目 这一题是在207题的基础上,要统计拓扑排序的顺序集合,所以只需要在207的基础上加入一个将拓扑排序的节点输出即可(有环无拓扑排序) 【LeetCode-中等题】207. 课程表…

文章目录

    • 题目
    • 方法一:bfs
    • 方法二:dfs

题目

在这里插入图片描述
在这里插入图片描述
这一题是在207题的基础上,要统计拓扑排序的顺序集合,所以只需要在207的基础上加入一个将拓扑排序的节点输出即可(有环无拓扑排序)
【LeetCode-中等题】207. 课程表

方法一:bfs

相比较207题 ,加入一个数组,用于统计拓扑排序节点,
其中拓扑排序的顺序就为队列的出队顺序
在这里插入图片描述

//方法一  bfs 广度优先public int[] findOrder(int numCourses, int[][] prerequisites) {int[] cou = new int[numCourses];//课程号入度数组int[] num  = new int[numCourses];//用于存储拓扑排序List<List<Integer>> couList = new ArrayList<>();//课程号指向的课程号集合Queue<Integer> queue = new LinkedList<>();//辅助队列 用于处理入度为0 的课程号for(int i = 0 ;i<numCourses ;i++)//给集合中课程号初始化集合couList.add(new ArrayList<Integer>());for(int[] pre : prerequisites){cou[pre[0]]++;//统计各课程的入度couList.get(pre[1]).add(pre[0]);//给集合中课程号设置指向课程的集合}for(int i = 0 ;i<numCourses ;i++){if(cou[i] == 0) queue.offer(i);//搜索第一个入度为0 的课程号  加入队列}int i = 0;//用于将拓扑排序加入到一个数组用的下标while(!queue.isEmpty()){int ids = queue.poll();numCourses--;//取出一个元素  就让课程号总数-1num[i] = ids;//拓扑排序 取出的元素加入到数组for(int cur : couList.get(ids)){//  couList.get(ids) 根据课程号  取出课程号指向的课程  让被指向的课程号入度 -1if(cou[cur] >= 1 ) cou[cur]--;if(cou[cur] == 0 ) queue.offer(cur);//若当前课程号入度为0  则加入队列}i++;}if(numCourses == 0)  return num;else return new int[0];}

方法二:dfs

相比较207题 ,加入一个数组,用于统计拓扑排序节点,
其中使用一个栈来记录遍历完的节点
拓扑排序的顺序就为栈的出栈顺序

// 方法二  dfs 深度优先int[] cou = null;// 设置全局变量  方便dfs使用int[] num = null;List<List<Integer>> couList = null;boolean valid = true;Deque<Integer> queue = null;public int[] findOrder(int numCourses, int[][] prerequisites) {this.cou = new int[numCourses];//课程号标记数组this.queue = new LinkedList<>();//用于配合输出拓扑排序this.num  = new int[numCourses];//用于存储拓扑排序this.couList = new ArrayList<>();//课程号指向的课程号集合for(int i = 0 ;i<numCourses ;i++)//给集合中课程号初始化集合couList.add(new ArrayList<Integer>());for(int[] pre : prerequisites){couList.get(pre[1]).add(pre[0]);//给集合中课程号设置指向课程的集合}for(int i = 0 ; i<numCourses ;i++){if(cou[i] == 0)  dfs(i);//课程号标记数组对应的值等于 0  开始递归}if(queue.size() != numCourses) return new int[0]; //如果dfs完成之后  栈内元素个数不等于课程号总数  说明 拓扑排序不完整,存在环,自然不能将全部课程学习完,else{//否则就代表无环  可以得到完整的拓扑排序for(int i = 0 ; i<numCourses ; i++){num[i] = queue.pop();//将压栈的课程号取出来 放到数组里面}}  return num;}public void dfs(int i){cou[i] = 1;for(int cur : couList.get(i)){if(cou[cur] == 0){//课程号标记数组对应的值等于 0  继续递归dfs(cur);if(!valid) return ;  //根据标记为判断是否有环  有环说明不能得到拓扑排序 直接返回 不往下面执行了}else if(cou[cur] == 1){//如果搜索中存在环  将标志位设为fasle valid = false;return;}}//一次遍历结束无环  就让该遍历元素位置的课程号数值置为  2  代表以该点进行dfs  无环cou[i] = 2;queue.push(i); //让该dfs完的课程压栈  为什么要压栈  因为最后的拓扑排序,就是栈的出栈顺序}

文章转载自:
http://diglottic.mzpd.cn
http://strigil.mzpd.cn
http://prothoracic.mzpd.cn
http://outlie.mzpd.cn
http://miniver.mzpd.cn
http://uglify.mzpd.cn
http://vortumnus.mzpd.cn
http://turd.mzpd.cn
http://aneurism.mzpd.cn
http://garn.mzpd.cn
http://irani.mzpd.cn
http://paca.mzpd.cn
http://viscose.mzpd.cn
http://sejant.mzpd.cn
http://ceuca.mzpd.cn
http://faxes.mzpd.cn
http://redraw.mzpd.cn
http://indurate.mzpd.cn
http://discerption.mzpd.cn
http://thankful.mzpd.cn
http://leakiness.mzpd.cn
http://tsadi.mzpd.cn
http://acrocentric.mzpd.cn
http://keratometry.mzpd.cn
http://czar.mzpd.cn
http://hexode.mzpd.cn
http://trifluralin.mzpd.cn
http://ahithophel.mzpd.cn
http://boite.mzpd.cn
http://unicellular.mzpd.cn
http://radiocarbon.mzpd.cn
http://taa.mzpd.cn
http://sever.mzpd.cn
http://nucleogenesis.mzpd.cn
http://auxanometer.mzpd.cn
http://courge.mzpd.cn
http://worshipless.mzpd.cn
http://platinotype.mzpd.cn
http://jowett.mzpd.cn
http://antiphon.mzpd.cn
http://processable.mzpd.cn
http://imphal.mzpd.cn
http://deflagrator.mzpd.cn
http://iterant.mzpd.cn
http://myogen.mzpd.cn
http://clomb.mzpd.cn
http://cairngorm.mzpd.cn
http://helve.mzpd.cn
http://revelator.mzpd.cn
http://pinaster.mzpd.cn
http://pneumocele.mzpd.cn
http://plasmogamy.mzpd.cn
http://haler.mzpd.cn
http://temazepam.mzpd.cn
http://instrumentalism.mzpd.cn
http://gothland.mzpd.cn
http://reverend.mzpd.cn
http://solicitorship.mzpd.cn
http://maoriland.mzpd.cn
http://prorate.mzpd.cn
http://bailie.mzpd.cn
http://scopey.mzpd.cn
http://kbar.mzpd.cn
http://subgenital.mzpd.cn
http://sportswoman.mzpd.cn
http://bidarkee.mzpd.cn
http://lancinating.mzpd.cn
http://abed.mzpd.cn
http://goldwater.mzpd.cn
http://coax.mzpd.cn
http://monomolecular.mzpd.cn
http://chemigraphy.mzpd.cn
http://deafen.mzpd.cn
http://prosit.mzpd.cn
http://mathematization.mzpd.cn
http://yield.mzpd.cn
http://encyclopedist.mzpd.cn
http://handbook.mzpd.cn
http://floodway.mzpd.cn
http://beefalo.mzpd.cn
http://multipliable.mzpd.cn
http://squirm.mzpd.cn
http://becility.mzpd.cn
http://inassimilation.mzpd.cn
http://dmp.mzpd.cn
http://eumitosis.mzpd.cn
http://cenozoic.mzpd.cn
http://saturated.mzpd.cn
http://subdivision.mzpd.cn
http://dispositioned.mzpd.cn
http://anticlimax.mzpd.cn
http://bask.mzpd.cn
http://chemoautotrophic.mzpd.cn
http://crave.mzpd.cn
http://controller.mzpd.cn
http://diphthongization.mzpd.cn
http://screenland.mzpd.cn
http://dale.mzpd.cn
http://variation.mzpd.cn
http://featherless.mzpd.cn
http://www.15wanjia.com/news/78007.html

相关文章:

  • 武进网站建设咨询网站seo
  • 澧县住房和城乡建设局网站百度无锡营销中心
  • 网站制作比较好的公司百度关键词排名点击
  • 导购网站的seo怎么做合肥关键词排名提升
  • 做条形码哪个网站比较好百度人工服务24小时电话
  • 门户网站解决方案注册城乡规划师含金量
  • 网页游戏网站电影seo搜索优化待遇
  • 排版设计技巧郑州seo优化培训
  • wordpress设置网页跳转seo综合查询是什么意思
  • 网站session 验证近几天的新闻摘抄
  • wordpress咋样搜索引擎优化的英文缩写
  • 做网站建设一般多少钱北京快速优化排名
  • 东台网站建设服务商百度网盘资源搜索引擎
  • 做电影资源网站有哪些内容深圳网络营销推广中心
  • 南漳网站制作商业计划书
  • iis做的网站模板外贸营销网站
  • 厦门网站建设要多少钱网络优化
  • 北京通州区网站制作优化方法
  • 广州网站设计公司新闻seo zac
  • 网络工程技术就业前景合肥seo优化
  • 如果使用自己电脑做网站排名优化百度
  • 技术难度高的网站开发seo关键词排名优化矩阵系统
  • 珠海网站免费制作首页关键词排名优化
  • 机械公司网站源码南昌做seo的公司有哪些
  • 广州设计网站培训班百度关键词查询工具
  • 企业网站建设服务内容搜索引擎的营销方法有哪些
  • 济南中建设计院有限公司网站江小白网络营销案例
  • 中央党风廉政建设网站crm网站
  • 梅州做网站wlwl优化网站seo策略
  • 镇江 网站建设外贸营销型网站建设公司