class Solution {
public static int visited_node1 [];
public static int visited_node2 [];
public static int edges[];
public static int answer_node = -1;
public static int answer_distance = 9999999;
public static void process_node1(int node, int distance) {
if(visited_node1[node] != 0) {
return;
}
visited_node1[node] = distance;
if(edges[node] != -1) {
process_node1(edges[node], distance + 1);
}
}
public static void process_node2(int node, int distance) {
if (visited_node2[node] != 0) {
return;
}
visited_node2[node] = distance;
if (visited_node1[node] != 0) {
int max_distance = Math.max(visited_node1[node], visited_node2[node]);
if(max_distance == answer_distance) {
answer_node = Math.min(answer_node, node);
}
else if(max_distance < answer_distance) {
answer_distance = max_distance;
answer_node = node;
}
}
if(edges[node] != -1) {
process_node2(edges[node], distance + 1);
}
}
public int closestMeetingNode(int[] edges, int node1, int node2) {
this.edges = edges;
visited_node1 = new int [edges.length];
visited_node2 = new int [edges.length];
answer_node = -1;
answer_distance = 9999999;
process_node1(node1, 1);
process_node2(node2, 1);
return answer_node;
}
}
테스트 케이스에선 맞는데, 제출하면 틀린 이유가
전역변수 때문이었슴...
리트코드는 Solution 하나 당 하나의 테스트 케이스만 돌리는 줄 알았는데
아니네
댓글 0