lc 210
把課程關係轉成有向圖,對圖進行深度優先遍歷,checked標記已經訪問過的節點,order儲存訪問順序
也用到了回溯演算法:
# checked 陣列儲存已經儲存過的節點, visited記錄當前訪問過的節點, checked記錄訪問過的不會產生環的節點
# order儲存訪問順序,v當前訪問節點
def has_cycle(self,graph,visited,checked,v,path):
if visited[v]: # 當前過程已經訪問過
return true
visited[v] = true
for i in graph[v]:
if not checked[i] and self.has_cycle(graph,visited,checked,i,path):
return true
checked[v] = true
visited[v] = false
return false
def findorder(self, numcourses: int, prerequisites: list[list[int]]) -> list[int]:
if not prerequisites or len(prerequisites) == 0 or numcourses <=1:
retur n [i for i in range(numcourses)]
graph =
visited =
checked =
path =
for i in range(numcourses):
for item in prerequisites:
for i in range(numcourses):
if not checked[i] and self.has_cycle(graph,visited,checked,i,path):
return
path.reverse()
return path
lc 207
class solution:
def has_cycle(self,graph,visited,checked,v):
if visited[v]:
return true
visited[v] = true
for i in graph[v]:
if not checked[i] and self.has_cycle(graph,visited,checked,i):
return true
checked[v] = true
visited[v] = false
return false
def canfinish(self, numcourses: int, prerequisites: list[list[int]]) -> bool:
if not prerequisites or len(prerequisites) == 0 or numcourses<=1:
return true
graph =
visited =
checked =
for i in range(numcourses):
for item in prerequisites:
for i in range(numcourses):
if not checked[i] and self.has_cycle(graph,visited,checked,i):
return false
return true
CAS KG 課程安排
課程目標 教學安排 詳情請見部落格 cas kg 課程安排 1.1 課程簡介 1.2 知識圖譜概述 1.3 知識圖譜與深度學習 2.1 機器學習基礎 2.2 深度學習基礎 2.3 典型深度學習模型 一 2.4 典型深度學習模型 二 3.1 典型圖演算法 3.2 圖匹配演算法 3.3 面向圖結構的隨機...
616 安排課程
2017.9.11 超時超時超時,去死吧 public class solution 建立所有的後序鍊錶。indegree計算所有的節點的入度。int indegree new int numcourses for int x prerequisites 找到乙個入度為0的節點,開始遍歷。int r...
安排課程 LintCode
你需要去上n門九章的課才能獲得offer,這些課被標號為 0 到 n 1 有一些課程需要 前置課程 比如如果你要上課程0,你需要先學課程1,我們用乙個匹配來表示他們 0,1 給你課程的總數量和一些前置課程的需求,返回你為了學完所有課程所安排的學習順序。可能會有多個正確的順序,你只要返回一種就可以了。...