博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拓扑排序
阅读量:6893 次
发布时间:2019-06-27

本文共 1658 字,大约阅读时间需要 5 分钟。

/** * Definition for Directed graph. * class DirectedGraphNode { *     int label; *     ArrayList
neighbors; * DirectedGraphNode(int x) { label = x; neighbors = new ArrayList
(); } * }; */public class Solution { /** * @param graph: A list of Directed graph node * @return: Any topological order for the given graph. */ public ArrayList
topSort(ArrayList
graph) { // write your code here ArrayList
order = new ArrayList<>(); if (graph == null) { return order; } //1.count indegree Map
indegree = getIndegree(graph); //2.bfs Queue
queue = new LinkedList<>(); for (DirectedGraphNode node : graph) { if (indegree.get(node) == 0) { queue.offer(node); order.add(node); } } while (!queue.isEmpty()) { DirectedGraphNode node = queue.poll(); for (DirectedGraphNode neighbor : node.neighbors) { //node -> neighbor indegree.put(neighbor, indegree.get(neighbor) - 1); if (indegree.get(neighbor) == 0) { queue.offer(neighbor); order.add(neighbor); } } } //check 环状依赖 if (order.size() == graph.size()) { return order; } else { return null; } } private Map
getIndegree(ArrayList
graph) { //1.统计indegree,用map装 Map
indegree = new HashMap(); //初始化 for (DirectedGraphNode node : graph) { indegree.put(node, 0); } for (DirectedGraphNode node: graph) { for (DirectedGraphNode neighbor : node.neighbors) { //node -> neighbor indegree.put(neighbor, indegree.get(neighbor)+1); } } return indegree; }}
View Code

 

转载于:https://www.cnblogs.com/yunyouhua/p/6938297.html

你可能感兴趣的文章
上下文属性监听
查看>>
【小白的CFD之旅】10 敲门实例
查看>>
POI文件导出至EXCEL,并弹出下载框
查看>>
iOS 使用正则表达式库RegexKitLite的问题
查看>>
C#使用MemoryStream类读写内存
查看>>
MySQL内存使用-线程独享
查看>>
JDBC连接MySQL数据库及演示样例
查看>>
【WP8.1开发】基于应用的联系人存储
查看>>
AI新时代-教你使用python+Opencv完成人脸解锁(附源码)
查看>>
MongoDB ( 三 )高级_状态返回和安全
查看>>
基于 Netty 的可插拔业务通信协议的实现「1」协议描述及基本消息对象设计
查看>>
NodeJS介绍以及开发微信公众号Example
查看>>
新时代前端的自我修养—2017 D2主题分享记录及我的思考
查看>>
java并发编程学习14--CompletableFuture(一)
查看>>
ES6语法之Symbol
查看>>
取周期性字符串中的其中一个
查看>>
d3.js ----面积图表
查看>>
Zepto这样操作元素属性
查看>>
30-seconds-code——Object
查看>>
pyspark底层浅析
查看>>