Java for LeetCode 207 Course Schedule 【Unsolved】

來源:互聯網
上載者:User

標籤:

There are a total of n courses you have to take, labeled from 0 to n - 1.

Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]

Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?

For example:

2, [[1,0]]

There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.

2, [[1,0],[0,1]]

There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.

解題思路一:

把每個節點放到圖裡,然後對每個節點進行BFS,如果出現自環,則為false,否則返回true,JAVA實現如下:

   

static public boolean canFinish(int numCourses, int[][] prerequisites) {    if (prerequisites.length == 0 || prerequisites[0].length == 0)        return true;    HashMap<Integer, UndirectedGraphNode> hm = new HashMap<Integer, UndirectedGraphNode>();    for (int[] nums : prerequisites)        for (int i = 0; i < nums.length - 1; i++) {            if (!hm.containsKey(nums[i]))                hm.put(nums[i], new UndirectedGraphNode(nums[i]));            if (!hm.containsKey(nums[i + 1]))                hm.put(nums[i + 1], new UndirectedGraphNode(nums[i + 1]));            hm.get(nums[i]).neighbors.add(hm.get(nums[i + 1]));        }    Iterator<Integer> iterator = hm.keySet().iterator();    while (iterator.hasNext())        if (haveLoop(hm.get(iterator.next())))            return false;    return true;}static boolean haveLoop(UndirectedGraphNode root) {HashMap<UndirectedGraphNode, Boolean> hm = new HashMap<UndirectedGraphNode, Boolean>();Queue<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>();hm.put(root, true);queue.add(root);while (!queue.isEmpty()) {UndirectedGraphNode temp = queue.poll();for (UndirectedGraphNode temp2 : temp.neighbors) {if (temp2 == root)return true;if (!hm.containsKey(temp2)) {hm.put(temp2, true);queue.add(temp2);}}}return false;}

 

 結果TLE,問題在於判斷有向圖是否有環的時候,對每一個節點判斷其實浪費了很多時間%>_<%

Java for LeetCode 207 Course Schedule 【Unsolved】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.