[LeetCode] 0207. 강좌일정

코스 일정

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간


총 가 있습니다 num 강좌 당신이 들어야 할 과목, 라벨이 붙은 0 에게 num코스-1.배열이 주어졌습니다. 전제조건 어디 전제 조건[i] = [ ai , bi ] 당신을 나타냅니다 ~ 해야 하다 코스를 수강하다 나는 먼저 강좌를 듣고 싶다면 일체 포함.

  • 예를 들어, 쌍 [0, 1], 은 강좌를 수강할 것을 나타냅니다. 0 너는 먼저 강좌를 들어야 해 1.

반품 진실 그렇지 않으면 모든 과정을 마칠 수 있습니다. 거짓.

 

예시 1:

입력: numCourses = 2, 전제 조건 = [[1,0]]
산출: 진실
설명: 총 2과목을 수강해야 합니다. 1과정을 수강하려면 0과정을 완료해야 합니다. 따라서 가능합니다.

예 2:

입력: numCourses = 2, 전제조건 = [[1,0],[0,1]]
산출: 거짓
설명: 총 2과목을 수강해야 합니다. 1과목을 수강하려면 0과목을 이수해야 하고, 0과목을 수강하려면 1과목도 이수해야 합니다. 따라서 불가능합니다.

 

제약:

  • 1 <= 강좌 수 <= 2000
  • 0 <= 전제조건.길이 <= 5000
  • 전제조건[i].length == 2
  • 0 <= a i , b i < numCourses
  • 모든 쌍의 전제 조건[i]은 다음과 같습니다. 고유한.

파이썬

				
					컬렉션에서 가져오기 deque 입력에서 가져오기 목록 클래스 솔루션: def canFinish(self, numCourses: int, 전제 조건: List[List[int]]) -> bool: indegree = [0] * numCourses adj = [[] for _ in range (numCourses)] 전제 조건의 전제 조건: adj[prerequisite[1]].append(prerequisite[0]) indegree[prerequisite[0]] += 1 queue = deque() for i in range(numCourses): if indegree[ i] == 0: queue.append(i) nodeVisited = 0 while queue: node = queue.popleft() nodeVisited += 1 for neighbor in adj[node]: indegree[neighbor] -= 1 if indegree[neighbor] = = 0: queue.append(neighbor) return nodeVisited == numCourses
				
			
ko_KR한국어