diff --git a/Python/1042_FlowerPlantingwithNoAdjacent.py b/Python/1042_FlowerPlantingwithNoAdjacent.py new file mode 100644 index 00000000..5b54310c --- /dev/null +++ b/Python/1042_FlowerPlantingwithNoAdjacent.py @@ -0,0 +1,34 @@ +#Difficulty = Medium +#Submission Speed = 85.81% +''' +#The Algorithm is similar to Graph coloring algorithm. +After making the graph from edge lists, +We will traverse every node one by one. For every node, create a fresh new list of choices of flowers +While Traversing a particular node (say NODE A), we will check its neighbours and if any of the neighbour has been assigned +flower (say flower 'X') we will remove that flower ('X') from the list of choices of the corresponding Node (NODE A) +''' +''' +If E = Number of Edges + V = Number of Vertices/Nodes +Time Complexity = O(V+E) +Space Complexity = O(2V+E) +''' +from collections import defaultdict +class Solution: + def gardenNoAdj(self, N, paths): + + #Create Graph + graph = defaultdict(list) + for i in paths: + graph[i[0]].append(i[1]) #Since Graph is Bidirectional, we need to add edge both sides + graph[i[1]].append(i[0]) + flowers = [] + for i in range(1, N + 1): #We will traverse every node one by one + choice = [1, 2, 3, 4] #create a fresh new list of choices of flowers + for k in graph[i]: #check its neighbours + try: + choice.remove(flowers[k-1]) #if any of the neighbour has been assigned flower (say flower 'X') we will remove that flower ('X') + except: + pass + flowers.append(choice[0]) #Select the first flower from the remaining choices + return flowers \ No newline at end of file diff --git a/README.md b/README.md index 9cc57fff..cd2052f8 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,16 @@ This repository consists of the solutions of the problems from LeetCode platform | # | Title | Solution | Time | Space | Difficulty | Tag | Note| |-----|---------------- | --------------- | --------------- | --------------- | ------------- |--------------|-----| +
+
+ ⬆️ Back to Top +
+
+ +## Graph +| # | Title | Solution | Time | Space | Difficulty | Tag | Note| +|-----|---------------- | --------------- | --------------- | --------------- | ------------- |--------------|-----| +|1042|[Flower Planting with No Adjacent](https://leetcode.com/problems/flower-planting-with-no-adjacent/)|[Python](./Python/1042_FlowerPlantingwithNoAdjacent.py)|_O(V+E)_|_O(2V+E)_|Medium|Graph|Graph Coloring|