Menu
CoddyTech

Palindrome Linked List

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

헤드에서 끝까지 읽은 값이 끝에서 헤드까지 읽은 값과 같으면 true를 반환하고, 그렇지 않으면 false를 반환하세요.

함수

isPalindrome(next: integer-array, values: integer-array) → boolean
nextinteger-array
각 노드가 연결하는 노드의 인덱스 또는 마지막 노드의 경우 -1
valuesinteger-array
각 노드가 보유한 값
반환값boolean
목록을 양방향으로 읽었을 때 동일하면 true

제약 조건

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

예제

입력
next = [4, 3, -1, 2, 1]values = [3, 4, 3, 1, 1]
출력
true
설명
링크는 노드 0, 4, 1, 3, 2를 방문하므로, 목록은 3, 1, 4, 1, 3입니다. 두 개의 3은 일치하고, 두 개의 1도 일치하며, 가운데의 4는 확인할 짝이 없습니다.
challenge icon

후속 질문

O(L) 시간과 O(1) 추가 메모리로 할 수 있나요?

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

테스트 #1

테스트 #2

테스트 #3

인자들

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

예상 출력

true