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

重庆永川网站建设公司昆明seo关键字推广

重庆永川网站建设公司,昆明seo关键字推广,妇产科医生免费咨询,查排名目录 牛客_NC316体育课测验(二)_拓扑排序 题目解析 C代码 Java代码 牛客_NC316体育课测验(二)_拓扑排序 体育课测验(二)_牛客题霸_牛客网 描述: 体育课共有numProjectnumProject个考核项目,编号为00到numProject−1numProject−1,考核中…

目录

牛客_NC316体育课测验(二)_拓扑排序

题目解析

C++代码

Java代码


牛客_NC316体育课测验(二)_拓扑排序

体育课测验(二)_牛客题霸_牛客网

描述:

        体育课共有numProjectnumProject个考核项目,编号为00到numProject−1numProject−1,考核中每两个项目被划分为一组得到分组数组groupsigroupsi​,现规定若想完成项目groupsi[0]groupsi​[0],必须先完成groupsi[1]groupsi​[1]。保证所有分组互不相同,若分组情况能顺利完成考核,请返回任意的一个完成顺序,否则返回空数组 。

数据范围:

1≤numProject≤2000
1≤groupsi.length≤numProject∗(numProject−1)


题目解析

拓扑排序类型题:

  1. 起始时,将所有入度为 0 的节点进行入队(入度为 0,说明没有边指向这些节点,将它们放到拓扑排序的首部,不会违反拓扑序定义)。
  2. 从队列中进行节点出队操作,出队序列就是对应我们输出的拓扑序。对于当前弹出的节点 x,遍历x 的所有出度y,即遍历所有由 x直接指向的节点y,对y做入度减一操作(因为x节点已经从队列中弹出,被添加到拓扑序中,等价于x节点从有向图中被移除,相应的由x发出的边也应当被删除,带来的影响是与 x相连的节点y的入度减一)。
  3. 对y进行入度减一之后,检查 y的入度是否为0,如果为0则将y入队(当y的入度为0,说明有向图中在y前面的所有的节点均被添加到拓扑序中,此时 可以作为拓扑序的某个片段的首部被添加,而不是违反拓扑序的定义)。
  4. 循环流程 2、3 直到队列为空。

C++代码

class Solution {
public:vector<int> findOrder(int numProject, vector<vector<int> >& groups) {vector<vector<int>> edg(numProject);vector<int> in(numProject);for(auto& e : groups){int a = e[0], b = e[1];edg[b].push_back(a); // b->ain[a]++;}queue<int> q;for(int i = 0; i < numProject; ++i){if(in[i] == 0)q.push(i);}vector<int> ret;while(q.size()){int x = q.front();q.pop();ret.push_back(x);for(auto& e : edg[x]){if(--in[e] == 0)q.push(e);}}// if(ret.size() == numProject)//     return ret;// return {};return ret.size()== numProject ? ret : (ret.clear(), ret);}
};

Java代码

import java.util.*;
public class Solution {public ArrayList<Integer> findOrder (int n, ArrayList<ArrayList<Integer>>  groups) {List<List<Integer>> edges = new ArrayList<>(); // 存储边for(int i = 0; i < n; i++){edges.add(new ArrayList<>());}int[] in = new int[n]; // ⼊度// 1. 建图for(int i = 0; i < groups.size(); i++){int a = groups.get(i).get(0), b = groups.get(i).get(1); // b -> ain[a]++;edges.get(b).add(a);}Queue<Integer> q = new LinkedList<>();// 2. ⼊度为 0 的点加⼊到队列中for(int i = 0; i < n; i++){if(in[i] == 0){q.add(i);}}ArrayList<Integer> ret = new ArrayList<>();// 3. 拓扑排序(BFS) while(!q.isEmpty()){int a = q.poll();ret.add(a);for(int b : edges.get(a)) // a -> b{if(--in[b] == 0){q.add(b);}}}if(ret.size() == n)return ret;elsereturn new ArrayList<>();}
}
http://www.dtcms.com/a/506423.html

相关文章:

  • 做做网站已更新免费私人直播间 哔哩哔哩
  • 上海网站制作哪家奿找人做网站大概多少钱
  • 宁波在线制作网站自己怎么健网站视频下载
  • 别人做的网站不能用了银川网站设计怎么样
  • 影视网站ps做阿里网站分辨率设置
  • 唐山展望网站建设南和网站建设公司太原网站建设
  • 顶呱呱代理建设网站专业网页设计模板
  • 文山网站建设代理别人帮自己做网站有后门吗
  • 网站关键词排名下降网站建设推广兼职
  • 网站建设公司初心广东近期新闻
  • 广州奕联网站开发wordpress wp_list_categories
  • 云建站哪家好黄山网站建设黄山
  • v6厂高仿手表网站html5网站网址
  • 微网站备案广州网站建设粤icp
  • 最炫表白网站html5源码常见的网站类型有哪些
  • 网站建设合同 知乎苏州百度运营公司排名
  • 建站网站插件行政部网站建设规划
  • 泰安润泽建设工程有限公司网站怎么做网络推广赚佣金
  • 网站开发 东莞centos装wordpress
  • 自由人网站开发怎么做企业推广
  • 阿里去要企业网站建设方案书2022装修简约风格效果图
  • 模板网站制作海外网络推广技巧
  • 整人关不掉的网站怎么做在线培训考试系统
  • 北京数字智慧展厅设计咨询seo智能优化公司
  • 网站设置伪静态网站域名等级
  • 惠州网站建设推广清博舆情系统
  • 网站设计网上培训学校海阳市住房和城乡建设局官方网站
  • 学做网站要学哪些不备案 国内网站吗
  • 湖北住房与城乡建设厅网站wordpress主题 下单
  • dede网站源码 如何烟台城乡建设局官方信息网站