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

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

LintCode 127-拓撲排序

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

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


思路: 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; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敖汉旗| 驻马店市| 温泉县| 革吉县| 盐津县| 福泉市| 大荔县| 彝良县| 崇信县| 柳江县| 双城市| 泰来县| 张家港市| 奉贤区| 昌图县| 延津县| 孟州市| 仪征市| 成都市| 志丹县| 收藏| 赣榆县| 宕昌县| 万源市| 青冈县| 油尖旺区| 富顺县| 满城县| 自治县| 安义县| 峨眉山市| 白水县| 阳泉市| 兰考县| 宾川县| 饶平县| 双城市| 武宁县| 潢川县| 珠海市| 山阳县|