Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Problem_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from collections import deque


class Solution:
def orangesRotting(self, grid):
neighbours = [[1, 0], [-1, 0], [0, 1], [0, -1]]
rows, cols = len(grid), len(grid[0])
q = deque()
fresh = 0
for r in range(rows):
for c in range(cols):
curr = grid[r][c]
if curr == 2:
q.append((r, c))
elif curr == 1:
fresh += 1
if fresh == 0:
return 0
time = 0
while q:
qs = len(q)
for _ in range(qs):
cr, cc = q.popleft()
for x, y in neighbours:
nr, nc = cr + x, cc + y
if 0 <= nr < rows and 0 <= nc < cols and grid[nr][nc] == 1:
fresh -= 1
grid[nr][nc] = 2
q.append((nr, nc))
if fresh == 0:
return time + 1
time += 1
if fresh > 0:
return -1
return time - 1
42 changes: 42 additions & 0 deletions Problem_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""
# Definition for Employee.
class Employee:
def __init__(self, id: int, importance: int, subordinates: List[int]):
self.id = id
self.importance = importance
self.subordinates = subordinates
"""


from collections import deque


class Solution:
def getImportance(self, employees, id):
adj = {}
importance = {}
for employee in employees:
eid, imp, subs = employee.id, employee.importance, employee.subordinates
importance[eid] = imp
for s in subs:
if eid in adj:
adj[eid].append(s)
else:
adj[eid] = [s]
print(adj)
q = deque()
result = importance[id]

if id not in adj:
return result
for s in adj[id]:
q.append(s)
while q:
front = q.popleft()
result += importance[front]
if front not in adj:
continue
for neigh in adj[front]:
q.append(neigh)

return result