diff --git a/BinaryTreeLevel_102.py b/BinaryTreeLevel_102.py new file mode 100644 index 00000000..b23b61bb --- /dev/null +++ b/BinaryTreeLevel_102.py @@ -0,0 +1,27 @@ +# Time Complexity : It is O(n) since we are iterating with all the roots. +# Space Complexity : It is O(n) since we are inserting all elements in the result list. +# Did this code successfully run on Leetcode : Yes +# Any problem you faced while coding this : + +class Solution: + def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: + result =[] + if root == None: + return result + + queue = deque() + queue.append(root) + + while queue: + Level =[] + queueLen = len(queue) + for i in range(queueLen): + rootNode=queue.popleft() + if(rootNode!=None): + Level.append(rootNode.val) + if (rootNode!=None and rootNode.left !=None): + queue.append(rootNode.left) + if (rootNode!=None and rootNode.right !=None): + queue.append(rootNode.right) + result.append(Level) + return result \ No newline at end of file diff --git a/CourseSchedule_207.py b/CourseSchedule_207.py new file mode 100644 index 00000000..26587d88 --- /dev/null +++ b/CourseSchedule_207.py @@ -0,0 +1,45 @@ +# Time Complexity : It is O(n) since we are iterating with the numCourses. +# Space Complexity : It is O(n) since are creating the hash map. +# Did this code successfully run on Leetcode : Yes +# Any problem you faced while coding this : Initially I have created the map with key as prerequisites[0], I was creating with indegree. + +from typing import List +from collections import defaultdict +from collections import deque + +class Solution: + def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: + + coursesMap = defaultdict(list) + courseCount = [0] * numCourses + + for course in prerequisites: + courseCount[course[0]] =courseCount[course[0]]+1 + coursesMap[course[1]].append(course[0]) + + queue = deque() + for minCourse in range(numCourses): + if courseCount[minCourse]==0: + queue.append(minCourse) + numberOfCourseCompleted = 0 + while queue: + numberOfCourseCompleted +=1 + leaveCourse = queue.popleft() + + for leftCourse in coursesMap[leaveCourse]: + courseCount[leftCourse] = courseCount[leftCourse] - 1 + if courseCount[leftCourse] == 0: + queue.append(leftCourse) + + + if(numberOfCourseCompleted!=numCourses): + return False + else: + return True + +obj = Solution() +print(obj.canFinish(5,[[1,4],[2,4],[3,1],[3,2]])) +print(obj.canFinish(2,[[1,0],[0,1]])) +print(obj.canFinish(6,[[5,4],[5,3],[4,2],[4,3],[3,1],[4,1]])) +print(obj.canFinish(2,[[1,0]])) +