国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LintCode 127-拓撲排序

2019-11-14 12:36:42
字體:
來源:轉載
供稿:網友

本人電子系,只為一學生。心喜計算機,小編以怡情。


思路: 1、用字典存儲每個節點的入度 2、用隊列存儲入度為零的節點 3、BFS

static public ArrayList<DirectedGraphNode> topSort(ArrayList<DirectedGraphNode> graph) { // write your code here //返回的值 ArrayList<DirectedGraphNode> ret=new ArrayList<>(); //隊列 Queue<DirectedGraphNode> que=new LinkedList<>(); //字典 HashMap<DirectedGraphNode, Integer> dict=new HashMap<>(); //入度的計算 for(DirectedGraphNode k : graph) { if(!dict.containsKey(k)) { dict.put(k, 0); for(DirectedGraphNode m:k.neighbors) { if(!dict.containsKey(m)) dict.put(m, 1); else { dict.put(m, dict.get(m)+1); } } } else { for(DirectedGraphNode m:k.neighbors) { if(!dict.containsKey(m)) dict.put(m, 1); else { dict.put(m, dict.get(m)+1); } } } } //將所有最開始入度就為零的節點放到隊列里 for(DirectedGraphNode n:dict.keySet()) { if(dict.get(n).equals(0)) { que.add(n); } } //進行主要的循環部分,實現輸出 while(!que.isEmpty()) { DirectedGraphNode temp=que.poll();//將隊列取出一個 ret.add(temp);//輸出:放到ret返回值里 //將輸出節點的下一個節點入度減一 for(DirectedGraphNode m : temp.neighbors) { dict.put(m,dict.get(m)-1); if(dict.get(m)==0)//如果減一后入度為0 que.add(m);//就放到隊列中 } } //最終返回 return ret; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涟源市| 临沂市| 武城县| 于田县| 南涧| 安阳县| 保康县| 台中县| 奈曼旗| 林甸县| 远安县| 梁平县| 罗定市| 鱼台县| 刚察县| 日土县| 新建县| 泊头市| 洛扎县| 永修县| 塘沽区| 怀来县| 盘山县| 安西县| 淮北市| 永城市| 宣威市| 永胜县| 定西市| 兴仁县| 花莲县| 嘉禾县| 乐安县| 广丰县| 古浪县| 繁峙县| 龙游县| 藁城市| 改则县| 桃源县| 武乡县|