Menu
CoddyTech

Reverse Nodes in k-Group

어려움연결 리스트python iconjava iconcpp iconc iconjs icon+10

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

리스트를 k개 노드씩 그룹으로 나누어 뒤집으세요. 처음 k개 노드는 역순이 되고, 다음 k개도 같은 방식으로 처리합니다. 이런 식으로 계속하세요. k개보다 적은 마지막 그룹은 순서를 유지합니다. 새로운 리스트 순서대로 값을 반환하세요.

함수

reverseKGroup(next: integer-array, values: integer-array, k: integer) → integer-array
nextinteger-array
각 노드가 연결되는 노드의 인덱스 또는 마지막 노드의 경우 -1
valuesinteger-array
각 노드가 보유한 값
kinteger
각 그룹에서 뒤집을 노드의 수
반환값integer-array
새 목록 순서의 값

제약 조건

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

예제

입력
next = [2, 3, 4, -1, 1]values = [1, 4, 2, 5, 3]k = 2
출력
[2, 1, 4, 3, 5]
설명
목록은 1, 2, 3, 4, 5(노드 0, 2, 4, 1, 3)로 읽힙니다. 1, 2와 3, 4 쌍은 순서가 뒤바뀌고, 5만 k = 2보다 짧으므로 마지막에 그대로 남습니다.
challenge icon

후속 질문

한 그룹을 뒤집고 나머지 목록에 재귀적으로 적용하는 방식으로 작성할 수 있나요? 이 방식은 추가 메모리를 얼마나 사용하나요?

코드 초기화
def reverseKGroup(next, values, k):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

next = [2, 3, 4, -1, 1]
values = [1, 4, 2, 5, 3]
k = 2

예상 출력

[2, 1, 4, 3, 5]