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

阿里云里做网站能上百度首页么免费博客网站

阿里云里做网站能上百度首页么,免费博客网站,农产品网络营销方案,图像生成器在线制作想要精通算法和SQL的成长之路 - 课程表 前言一. 课程表II #xff08;拓扑排序#xff09;1.1 拓扑排序1.2 题解 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 课程表II #xff08;拓扑排序#xff09; 原题链接 1.1 拓扑排序 核心知识#xff1a; 拓扑排序是专… 想要精通算法和SQL的成长之路 - 课程表 前言一. 课程表II 拓扑排序1.1 拓扑排序1.2 题解 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 课程表II 拓扑排序 原题链接 1.1 拓扑排序 核心知识 拓扑排序是专门应用于有向图的算法。BFS的写法就叫拓扑排序核心就是让入度为0的节点入队。拓扑排序的结果不唯一。同时拓扑排序有一个重要的功能能够检测有向图中是否存在环。 我们先分析一下本题 先说下课程课程有它自己的一个先后的依赖顺序。符合 “有向” 。想要学习某个课程它的前缀课程可能有多个。那么我们可以用 “度” 的概念去标识衡量。这里是入度。 先用图来解释下本次算法的核心方向摘自leetcode题解 说白了就是 不断地找入度为0的节点然后剔除。剔除的同时维护后续节点的入度数。以此类推。 1.2 题解 那么本题我们该如何解我们一步步来我们以numCourses 4, prerequisites [[1,0],[2,0],[3,1],[3,2]] 为例来说。官方解释 总共有 4 门课程。要学习课程 3你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。 public int[] findOrder(int numCourses, int[][] prerequisites) {}那么我们可以知道这个二维数组prerequisites中第二个数字代表”前缀“第一个数字代表”后缀“。[1,0] 用图表示就是0-1。同时我们还可以计算出此时1这个节点的入度应该1。因为0指向了1。 1.首先我们要对入参做一个校验 // 1. 先判断数组或者numCourses为空的情况 if (numCourses 0) {return new int[0]; }2.我们需要遍历二维数组prerequisites中拿到所有节点的入度以及这个拓扑图的结构。 我们用inDegree[]数组表示各个节点的入度。用一个HashSet数组表示邻接表的结果。数组的索引代表的是节点的值。数组值即HashMap代表这个节点的所有后继节点。以0为例它的后继节点有1和2。 // 2. 用inDegree[] 数组表示每个节点的入度数。 // 同时维护拓扑图的结构例如0-10-2 HashSetInteger[] adj new HashSet[numCourses]; // 初始化下 for (int i 0; i numCourses; i) {adj[i] new HashSet(); } // 构建入度 int[] inDegree new int[numCourses]; for (int[] p : prerequisites) {// 入度1inDegree[p[0]];// 把当前节点的后继节点存储起来adj[p[1]].add(p[0]); }3.我们用一个队列用来存储入度为0的节点。 // 3.准备个队列,存储入度为0的节点 LinkedListInteger queue new LinkedList(); for (int i 0; i numCourses; i) {if (inDegree[i] 0) {queue.offer(i);} }为啥要这一个步骤如果发现没有入度为0的节点说明啥成环了那本题就无解。如图 4.如果存在入度为0的节点我们开始往后递归做2.1节的内容。 先拿到入度为0的节点删除它把他放入结果集。同时维护后继节点的入度。如果后继节点入度数-1后为0。那么同样放入到队列中递归。 // 结果集 int[] res new int[numCourses]; // 统计结果集中的个数 int count 0; while (!queue.isEmpty()) {// 入度为0的节点我们弹出Integer head queue.poll();// 放入结果集res[count] head;// 当前入度为0节点对应的后继节点。如果是0 -- 1,2HashSetInteger nextNodeList adj[head];// 更新后继节点的入度for (Integer nextNode : nextNodeList) {// 对应的后继节点的入度要减1inDegree[nextNode]--;// 如果入度-1后为0了。再入队if (inDegree[nextNode] 0) {queue.offer(nextNode);}} }最后我们只需要关心结果集个数是否和题干中的numCourses一致。一致的话返回我们构建的结果集否则本题为空解 // 如果遍历完了发现count数量和 numCourses一致说明有一个正确的结果集 if (count numCourses) {return res; } return new int[0];最终完整代码如下 public class Test210 {public int[] findOrder(int numCourses, int[][] prerequisites) {// 1. 先判断数组或者numCourses为空的情况if (numCourses 0) {return new int[0];}// 2. 用inDegree[] 数组表示每个节点的入度数。// 同时维护拓扑图的结构例如0-10-2HashSetInteger[] adj new HashSet[numCourses];// 初始化下for (int i 0; i numCourses; i) {adj[i] new HashSet();}// 构建入度int[] inDegree new int[numCourses];for (int[] p : prerequisites) {// 入度1inDegree[p[0]];// 把当前节点的后继节点存储起来adj[p[1]].add(p[0]);}// 3.准备个队列,存储入度为0的节点LinkedListInteger queue new LinkedList();for (int i 0; i numCourses; i) {if (inDegree[i] 0) {queue.offer(i);}}// 结果集int[] res new int[numCourses];// 统计结果集中的个数int count 0;while (!queue.isEmpty()) {// 入度为0的节点我们弹出Integer head queue.poll();// 放入结果集res[count] head;// 当前入度为0节点对应的后继节点。如果是0 -- 1,2HashSetInteger nextNodeList adj[head];// 更新后继节点的入度for (Integer nextNode : nextNodeList) {// 对应的next节点的入度要减1inDegree[nextNode]--;// 如果入度-1后为0了。再入队if (inDegree[nextNode] 0) {queue.offer(nextNode);}}}// 如果遍历完了发现count数量和 numCourses一致说明有一个正确的结果集if (count numCourses) {return res;}return new int[0];} }这个题目算是课程表系列的第二道了。第一道207. 课程表做法和上面一模一样只不过返回数组的地方返回true/false即可。
http://www.yutouwan.com/news/296020/

相关文章:

  • 网上如何建网站金融公司网站模板
  • 建设部网站官网证书查询网络营销与传统营销有哪些区别
  • 网站被镜像怎么办云网站制作的流程
  • 云鼎大数据888元建站泰州网站建设服务公司
  • 电子商务网站系统规划报告asp网站做消息提醒功能
  • 江西建设三类人员网站网站关键词快速排名服务
  • 菏泽营销网站建设公司网络营销的三大基础
  • 低价网站建设顺德平面设计师必看的网站
  • 宜春网站制作最近的国际新闻大事件
  • 建设网站网络公司wordpress设置为中文
  • 小辣椒昆明网站开发做个平台网站怎么做的
  • destoon 手机网站模板网络推广公司介绍
  • 网站建设开发哪家质量好如何设立官方网站
  • 广州网捷网站建设技术有限公司开源镜像网站开发
  • 网站建设商标注册多少类目深圳软件外包公司排行榜
  • 网站开发中的抓包工具赣州模板建站开发
  • 中国建设工程标准化协会网站sql数据库添加网站
  • 企业组织网站建设方案网站建设对帮助信息的设置
  • 网站建好了 如何推广wordpress安装流程
  • 用自己的名字做网站域名最好用的设计网站
  • 网络公司给我做网站我有没有源代码版权吗免费开源cms内容管理系统
  • 网站后台添加内容网页不显示大象影视传媒制作公司
  • 长治做网站公司网站顶部展出的大幅广告
  • 网站建设与运营策划书iis 修改默认网站
  • 重庆建网站哪家售后服务比较好宁波网络推广平台
  • 广州自助网站制作合肥建设工程市场价格信息网
  • 网站开发综合实训报告域名网站有哪些
  • 工信部网站备案查不到甘肃酒泉建设银行网站
  • 设计好的商城网站建设网络公司网站快速排名技巧
  • 洛阳做网站排名免费自助建站软件下载