classSolution: defcircularGameLosers(self, n: int, k: int) -> List[int]: vis = [0] * n s = 1 now = 0 while vis[now] == 0: vis[now] += 1 now += s * k s += 1 now %= n ans = [] for i inrange(n): if vis[i] == 0: ans.append(i+1) return ans
classSolution: defmaxMoves(self, grid: List[List[int]]) -> int: xx,yy = len(grid[0]),len(grid) @lru_cache(maxsize=None) defdfs(x,y): n = grid[y][x] mx = 0 for dx,dy in [[1,-1],[1,0],[1,1]]: nx , ny = x + dx, y + dy if xx > nx >= 0and yy > ny >= 0 \ and grid[ny][nx] > n: mx = max(mx, dfs(nx,ny)+1) return mx returnmax(dfs(0,i) for i inrange(yy))
classSolution: defcountCompleteComponents(self, n: int, edges: List[List[int]]) -> int: defdfs(node, visited, graph): visited.add(node) component.add(node) for neighbor in graph[node]: if neighbor notin visited: dfs(neighbor, visited, graph)
defis_complete_component(component, n): size = len(component) for node in component: iflen(graph[node]) != size - 1: returnFalse returnTrue
graph = {i: [] for i inrange(n)} for edge in edges: graph[edge[0]].append(edge[1]) graph[edge[1]].append(edge[0])
visited = set() count = 0 for i inrange(n): if i notin visited: component = set() dfs(i, visited, graph) if is_complete_component(component, n): count += 1