Created
July 3, 2022 04:35
-
-
Save lamhoangtung/eae6ca6f7b9f356d16cc2a9f5d4cdda8 to your computer and use it in GitHub Desktop.
Revisions
-
lamhoangtung created this gist
Jul 3, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,27 @@ class Solution: def countPaths(self, grid: List[List[int]]) -> int: rows, cols = len(grid), len(grid[0]) dp = {} def dfs(r, c, previous_val): if r < 0 or r == rows or \ c < 0 or c == cols or \ grid[r][c] <= previous_val: return 0 if (r, c) in dp: return dp[(r, c)] res = 1 res += dfs(r + 1, c, grid[r][c]) res += dfs(r - 1, c, grid[r][c]) res += dfs(r, c + 1, grid[r][c]) res += dfs(r, c - 1, grid[r][c]) dp[(r, c)] = res return res for r in range(rows): for c in range(cols): dfs(r, c, -1) return sum(dp.values()) % (10**9 + 7) This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,28 @@ class Solution: def peopleAwareOfSecret(self, n: int, delay: int, forget: int) -> int: states = {1: 1} # date_start: num_people_known current_date = delay while current_date <= n: new_person_known = 0 person_forgets = {} for date_start, num_people_known in states.items(): if current_date - date_start >= delay: if current_date - date_start < forget: new_person_known += num_people_known else: person_forgets[date_start] = num_people_known # Remove person for date in person_forgets.keys(): states[date] -= person_forgets[date] if states[date] <= 0: del states[date] # Add new person if new_person_known != 0: states[current_date] = new_person_known # print(f"After day {current_date}, {new_person_known} new people know the secret, {sum(person_forgets.values())} people forget the secret, {states}, ans is {sum(states.values())}") current_date += 1 return sum(states.values()) % (10**9 + 7)