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

南京公司网站设计定制中国空间站是干什么的

南京公司网站设计定制,中国空间站是干什么的,seo外包服务,网页源代码下载音乐文章目录 题目方法一#xff1a;bfs方法二#xff1a;dfs 题目 这一题是在207题的基础上#xff0c;要统计拓扑排序的顺序集合#xff0c;所以只需要在207的基础上加入一个将拓扑排序的节点输出即可#xff08;有环无拓扑排序#xff09; 【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];//用于存储拓扑排序ListListInteger couList new ArrayList();//课程号指向的课程号集合QueueInteger queue new LinkedList();//辅助队列 用于处理入度为0 的课程号for(int i 0 ;inumCourses ;i)//给集合中课程号初始化集合couList.add(new ArrayListInteger());for(int[] pre : prerequisites){cou[pre[0]];//统计各课程的入度couList.get(pre[1]).add(pre[0]);//给集合中课程号设置指向课程的集合}for(int i 0 ;inumCourses ;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;ListListInteger couList null;boolean valid true;DequeInteger 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 ;inumCourses ;i)//给集合中课程号初始化集合couList.add(new ArrayListInteger());for(int[] pre : prerequisites){couList.get(pre[1]).add(pre[0]);//给集合中课程号设置指向课程的集合}for(int i 0 ; inumCourses ;i){if(cou[i] 0) dfs(i);//课程号标记数组对应的值等于 0 开始递归}if(queue.size() ! numCourses) return new int[0]; //如果dfs完成之后 栈内元素个数不等于课程号总数 说明 拓扑排序不完整存在环自然不能将全部课程学习完else{//否则就代表无环 可以得到完整的拓扑排序for(int i 0 ; inumCourses ; 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.dnsts.com.cn/news/19615.html

相关文章:

  • 常见的网站建设技术广告宣传语
  • 一流校建设网站中山百度网站推广
  • 做网站的把网站写成一行dw个人网页制作教程学生
  • 网站建设后台管理成都php网站建设工程师
  • 电商网站建设的核心是什么工程承包合同协议书
  • 深圳建立公司网站公司WordPress添加图片模块
  • 自动建站源码ios开发网站app
  • 17一起做网站普宁站网站收录排名
  • 单页网站开发费用如何成立公司
  • 上海网站搜索排名优化哪家好代做网页设计作业
  • 建设商城网站的难点万网的网站建设好吗
  • 萍乡网站优化个人网站谢谢
  • 网站做标题有用吗做义工旅行有哪些网站
  • 做不锈钢管网站大气金融php网站源码
  • 上海哪家网站建设公司好福州seo结算
  • 恩施旅游网站建设python在线编程游戏
  • 西部数码虚拟主机怎么做网站教育网站建设
  • 2015做外贸网站好做吗高校网站建设评比标准
  • 千助网站公司做游戏破解版的网站
  • 上海网站建设套餐如何做招聘网站的方案
  • 做一家影视网站赚钱吗做网站记什么科目
  • 怎么去做一个网站如何做网站旅游产品分析
  • 商标注册网上查询重庆网站seo分析
  • 工信部网站备案要先做网站吗怎样在微信上开发小程序
  • 做教程网站资源放哪里做运营的具体做什么
  • 如何在企业版社保网站做增员网站排名优化是怎么做的
  • 开个网站做代理建什么网站赚钱
  • 沧州免费建站专业建网站价格
  • 如何建设一个网站购物网站模版
  • 常宁市建设局网站长沙旅游商贸职业技术学院