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

龙华网站设计公司沂南网站建设

龙华网站设计公司,沂南网站建设,安徽富通建设工程有限公司网站,南山做网站行业目录 1. 拓扑排序简介 1.1 有向无环图 (DAG 图) 1.2 AOV 网(顶点活动图) 1.3 拓扑排序 1.3.1 如何实现 2. 力扣实战应用 2.1 课程表 2.1.1 算法原理 2.1.2 算法代码 2.2 课程表 II 2.2.1 算法原理 2.2.2 算法代码 2.3 火星词典 (hard) (原剑指offer) 2.3.1 算法原理…目录 1. 拓扑排序简介 1.1 有向无环图 (DAG 图) 1.2 AOV 网(顶点活动图) 1.3 拓扑排序 1.3.1 如何实现 2. 力扣实战应用 2.1 课程表 2.1.1 算法原理 2.1.2 算法代码 2.2 课程表 II 2.2.1 算法原理 2.2.2 算法代码 2.3 火星词典 (hard) (原剑指offer) 2.3.1 算法原理 2.3.2 算法代码 1. 拓扑排序简介 1.1 有向无环图 (DAG 图) 顶点与顶点之间的边, 是具有方向, 并且不会构成环(无回路). 有向图中, 有两个重要概念: 出度入度 1.2 AOV 网(顶点活动图) 在有向无环图中, 用顶点来表示一个活动, 用边来表示活动的先后顺序的图结构. 1.3 拓扑排序 找到做的事情(活动)的先后顺序(可能不是唯一的). 排序过程: 找到入度为 1 的点删除与该点连接的边重复 1, 2 操作, 直至图中没有点或者没有入度为 0 的点(可能存在环) 重要应用: 判断有向图中是否有环 1.3.1 如何实现 借助队列, 进行一次 BFS: 初始化: 把所有入度为 0 的点加入到队列中 当队列不为空时: 拿出队头元素, 加入已排序序列删除与该元素相连接的边判断: 与删除边相连的点, 是否入度为 0 , 若是, 则加入队列中 2. 力扣实战应用 2.1 课程表 . - 力扣LeetCode 2.1.1 算法原理 问题核心: 判断 图 中是否带环 拓扑排序 灵活使用 Java 提供的集合类, 进行图的构建: 构建邻接表 1. ListListInteger 2. MapInteger, ListInteger 借助队列, 进行 BFS , 判断是否带环: 将所有入度为 0 的节点入队(从图中拿走该节点)拿出队头元素, 删除与该元素相邻的边判断与删除的边相连的节点入度是否为 0若为 0 , 则入队重复以上操作当队空时, 若还有入度不为 0 的节点, 则说明该图带环 注意: 使用数组记录各节点的入度 int[] in 2.1.2 算法代码 class Solution {public boolean canFinish(int n, int[][] p) {// 记录节点的入度int[] in new int[n];// 构建邻接表MapInteger, ListInteger edges new HashMap();for(int i 0; i p.length; i) {int a p[i][0], b p[i][1]; // b - aif(!edges.containsKey(b)) {edges.put(b, new ArrayList());}edges.get(b).add(a);in[a];}QueueInteger q new LinkedList();// 将入度为 0 的节点入队for(int i 0; i n; i) {if(in[i] 0) q.offer(i);}// bfswhile(!q.isEmpty()) {int t q.poll();for(int x : edges.getOrDefault(t, new ArrayList())) {in[x]--;if(in[x] 0) q.offer(x);}}for(int x : in) {if(x ! 0) return false;}return true;} } 2.2 课程表 II . - 力扣LeetCode 2.2.1 算法原理 本题解法与上题解法一致, 唯一需要多处理的就是记录拓扑排序的序列. 2.2.2 算法代码 class Solution {public int[] findOrder(int n, int[][] p) {// 统计节点的入度情况int[] in new int[n 1];// 创建邻接表MapInteger, ListInteger edges new HashMap();for(int i 0; i p.length; i) {int a p[i][0], b p[i][1]; // b - ain[a];if(!edges.containsKey(b)) {edges.put(b, new ArrayList());}edges.get(b).add(a);}QueueInteger q new LinkedList();// 将入度为 0 的节点入队for(int i 0; i n; i) {if(in[i] 0) q.offer(i);}int size 0;int[] ret new int[n];// bfswhile(!q.isEmpty()) {int t q.poll();// 进入拓扑序列ret[size] t;for(int x : edges.getOrDefault(t, new ArrayList())) {in[x]--;if(in[x] 0) q.offer(x);}}return size n ? ret : new int[]{};} } 2.3 火星词典 (hard) (原剑指offer) . - 力扣LeetCode 2.3.1 算法原理 统计节点的入度信息 MapCharacter, Integer ; 将每个节点的入度信息初始化为 0  构建邻接表 MapCharacter, SetCharacter ; 注意不能重复接入存在的元素(所以使用 HashSet, 查找速度快) 搜集顺序信息 两层 for 循环 前后指针 细节问题 abc ab , 这种特殊情况不合法, return ; 2.3.2 算法代码 class Solution {public String alienOrder(String[] words) {// 统计每个字符的入度MapCharacter, Integer in new HashMap();for(String s : words) {for(int i 0; i s.length(); i) {char ch s.charAt(i);if(!in.containsKey(ch)) in.put(ch, 0);}}// 构建邻接表MapCharacter, SetCharacter edges new HashMap();for(int i 0; i words.length; i) {for(int j i 1; j words.length; j) {int front 0, tail 0;String s1 words[i], s2 words[j];while(front s1.length() tail s2.length()) {char ch1 s1.charAt(front), ch2 s2.charAt(tail);if(ch1 ch2) {front;tail;}else {// ch1 - ch2// 可能重复存在 : ch1 - ch2if(edges.containsKey(ch1) edges.get(ch1).contains(ch2)) {break;} if(!edges.containsKey(ch1)) {edges.put(ch1, new HashSet());}// 入度加一in.put(ch2, in.get(ch2) 1);// 放入邻接表edges.get(ch1).add(ch2);break;}}// 字符串不合法if(front s1.length() tail s2.length()) return ; }}QueueCharacter q new LinkedList();StringBuilder stringBuilder new StringBuilder();// 将入度为 0 的节点入队for(Map.EntryCharacter, Integer e : in.entrySet()) {if(e.getValue() 0) q.offer(e.getKey());}// bfswhile(!q.isEmpty()) {char ch q.poll();stringBuilder.append(ch);SetCharacter set edges.getOrDefault(ch, new HashSet());for(Character x : set) {in.put(x, in.get(x) - 1);if(in.get(x) 0) q.offer(x);}}for(Map.EntryCharacter, Integer e : in.entrySet()) {if(e.getValue() ! 0) return ;}return stringBuilder.toString();} } END
http://www.hkea.cn/news/14478672/

相关文章:

  • 官方网站建设的四个步骤湖南知名网络推广公司
  • 医药电子商务网站建设汽车之家在线官网
  • 遵义 网站建设东莞网站建设 鞋材厂
  • 西安市网站建设公司wordpress怎么登陆地址
  • 北京建设工程主管部门网站电子商务网站建设报告怎么写
  • 怎么做qq盗号网站潍坊网站建设哪家专业
  • 对网站的建议网站小样用什么做
  • 哪里有学做视频的网站3摄影网站设计
  • h5响应式网站怎样修改手机网站首页
  • 扬州市城乡建设局招标网站wordpress搜索 主题
  • 建筑学网站推荐哪些网站有设计缺点
  • 建设企业网站注意事项上海排名优化seo
  • 定制类网站建设互联网网站开发发展
  • 怎么打开域名网站winserverfrp可以做网站吗
  • 网页网站怎么做的个人网页制作成品
  • 想要网站导航推广找人网站
  • 宁波网站建设团队做微商有什么好的货源网站
  • 网站优化公司seo案例小清新wordpress主题
  • 企业网站素材图片设计网站哪个
  • 洛阳市网站建设网络营销推广方案内容
  • 网页游戏排行选择东莞网站推广及优化
  • wordpress安装腾讯云怎样进行站点优化
  • 梦里做他千百度网站网站源码搭建网站
  • 界首网站优化公司网站在哪里找
  • 秦皇岛网站seo无极
  • 建站模版旅游网站建设的费用明细
  • 电影网站建设的意义wordpress自定义全局变量
  • 徐州做网站公司哪家好wordpress调查问卷插件
  • 徐州自助建站软件阿里云网站建设与发布题库
  • 网站推广产品怎么做软件商城官方下载