일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 괜찮음
- Writing
- 30분
- 만화도
- 링피트
- 스탭퍼
- 화상영어
- English
- leetcode
- 개발자
- 잡생각
- 운동
- 사이드
- FIT XR
- 3줄정리
- 영어공부
- 파비최
- 10분
- 미드시청
- 매일
- 뭐든
- 리얼 클래스
- Daily Challenge
- realclass
- 프로젝트
- Problem Solving
- 읽기
- 월간
- 영어원서읽기
- 쓰릴오브파이트
Archives
- Today
- Total
파비의 매일매일 공부기록
2023.01.25 Today's Challenge 본문
https://leetcode.com/problems/find-closest-node-to-given-two-nodes/
Find Closest Node to Given Two Nodes - LeetCode
Find Closest Node to Given Two Nodes - You are given a directed graph of n nodes numbered from 0 to n - 1, where each node has at most one outgoing edge. The graph is represented with a given 0-indexed array edges of size n, indicating that there is a dire
leetcode.com
DFS를 활용해서 푸는 문제
class Solution:
def closestMeetingNode(self, edges: List[int], node1: int, node2: int) -> int:
inf = float('inf')
n = len(edges)
dist_n1 = [inf for _ in range(n)]
dist_n2 = [inf for _ in range(n)]
def dfs(node, di, d):
if d[node] > di:
d[node] = di
if edges[node] != -1:
dfs(edges[node], di+1, d)
dfs(node1, 0, dist_n1)
dfs(node2, 0, dist_n2)
for i in range(n):
dist_n1[i] = max(dist_n1[i], dist_n2[i])
ans = dist_n1.index(min(dist_n1))
return ans if dist_n1[ans] != inf else -1
반응형
'Problem Solving > LeetCode' 카테고리의 다른 글
2023.01.27 Today's Challenge (0) | 2023.01.27 |
---|---|
2023.01.26 Today's Challenge (0) | 2023.01.26 |
2023.01.24 Today's Challenge (0) | 2023.01.24 |
2023.01.23 Today's Challenge (0) | 2023.01.23 |
2023.01.22 Today's Challenge (0) | 2023.01.22 |
Comments