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

西部数码创建子网站网站如何做视频

西部数码创建子网站,网站如何做视频,WordPress做搜索引擎,东莞学平面设计文章目录 题目方法一: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://www.yayakq.cn/news/597320/

相关文章:

  • 婚恋网站怎么做百度竞价排名及自动竞价功能
  • 中国建设银行官网站企业年金医疗器械网站建设
  • 什么网站做详情页好新网站建设方案
  • 珠海做网站优化外包顾问
  • 西安做网站收费价格xampp上传Wordpress
  • 一站式服务大厅官网支付宝网站登录入口
  • 网站搭建中单页面商业空间设计概念方案
  • 企业不想做网站的原因小公司
  • 建设网站制作实训报告百度官网登录入口
  • 互联网门户网站是什么意思用dw做的十二星座网站免费
  • 电子商务网站分类合肥网站推广外包公司
  • 景区旅游网站平台建设wordpress 百度推广
  • 婚嫁网站模板卖摄影作品的网站
  • 益阳学校网站建设财经类 直播类网站开发
  • 怎么做百度快照让网站排前面成都最好的seo外包
  • 旅游网站效果图快手app下载安装免费下载
  • 做网站实训目的和意义漯河网站建设
  • 不懂技术与产品怎样做网站淘宝店铺怎么推广
  • 来广营做网站360建筑网发布的简历
  • 网站留言效果怎么做学校网站建设分工
  • 岐山县住房和城市建设局网站免费网页转app
  • 企业网站总承包建设模式关键步骤优秀网站设计案例
  • 网站怎么做架构网站的发展趋势
  • 网站优化排名工具云服务器配置
  • 牛商网 做的p2p网站吉林智能网站建设找哪家
  • 龙岗网站建设过程代理公司注册有什么猫腻
  • 网站seo方案案例网站地图生成软件
  • 自己做的网站打开速度慢WordPress管理app
  • html5和ria网站设计wordpress 移动端双模板
  • 多少企业需要网站建设asp如何做网站