Menu
CoddyTech

Remove Nth Node From End of List

같은 길이의 두 배열에 저장된 단일 연결 리스트가 주어집니다. 노드 i는 값 values[i]를 가지며 노드 next[i]를 가리킵니다. -1은 리스트의 끝을 나타내고, 헤드는 노드 0입니다. 노드는 리스트 순서대로 저장되어 있지 않으므로 링크를 따라가세요.

리스트의 끝에서부터 세어 n번째 노드를 제거하세요. 이때 마지막 노드는 끝에서 1번째입니다. 남은 노드의 값을 리스트 순서대로 반환하세요.

함수

removeNthFromEnd(values: integer-array, next: integer-array, n: integer) → integer-array
valuesinteger-array
각 노드가 보유한 값
nextinteger-array
각 노드가 연결되는 노드의 인덱스 또는 마지막 노드인 경우 -1
ninteger
끝에서부터 세어 제거할 노드. 마지막 노드는 1입니다.
반환값integer-array
리스트 순서대로 나머지 값들, 유일한 노드가 제거되면 비어 있음

제약 조건

  • 1 ≤ L ≤ 5000이며, 여기서 L은 values와 next의 길이입니다.
  • -100 ≤ values[i] ≤ 100
  • 1 ≤ n ≤ L
  • 각 next[i]는 -1이거나 0부터 L-1까지의 노드 인덱스입니다.
  • 노드 0에서 시작해 목록은 모든 노드를 정확히 한 번씩 방문한 다음 -1에 도달합니다. 순환은 없습니다.

예제

입력
values = [5, 9, 2, 7, 6]next = [2, 3, 4, -1, 1]n = 2
출력
[5, 2, 6, 7]
설명
노드 0에서 링크를 따라가면 노드 0, 2, 4, 1, 3을 방문하므로, 목록은 5, 2, 6, 9, 7입니다. 끝에서 두 번째 노드는 값이 9인 노드 1이며, 이 노드를 제거하면 목록은 5, 2, 6, 7이 됩니다. 배열 항목 values[5-2] = 7은 제거할 노드가 아니라 마지막 노드입니다.

lock icon제출 시 숨은 테스트 +14개

challenge icon

후속 질문

먼저 길이를 세지 않고 한 번의 순회로 노드를 찾아 연결을 해제할 수 있나요?

코드 초기화
def removeNthFromEnd(values, next, n):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

values = [5, 9, 2, 7, 6]
next = [2, 3, 4, -1, 1]
n = 2

기대값

[5, 2, 6, 7]