2016-12-30 5 views
1

그래서 Cracking the Coding Interview를 읽으려고합니다. 나는이 문제에하고 있어요 :Palindrome 솔루션을 역전 및 비교 (코딩 인터뷰 크래킹)

내가 처음 솔루션 (페이지 217) 기능에 인수로 단지 노드를 제공하는 것으로 나타났습니다

"연결리스트가 회문인지 확인하는 함수를 구현" 전체 목록보다는 오히려. 필자는 궁금한 점이 있습니다. 함수가 목록의 다음 노드를 알고 있으며 목록이 제공되지 않은 이유는 무엇입니까?

나는 아래의 코드를 제공합니다. 링크 된 목록에서

boolean isPalindrome(LinkedListNode head){ 
    LinkedListNode reversed = reverseAndClone(head); 
    return isEqual(head, reversed); 
} 
LinkedListNode reverseAndClone(LinkedListNode node){ 
    LinkedListNode head = null; 
    while(node != null){ 
    LinkedListNode n = new LinkedListNode(node.data); 
    n.next = head; 
    head = n; 
    node = node.next; 
    } 
    return head; 
} 

boolean isEqual(LinkedListNode one, LinkedListNode two) { 
    while(one != null && two != null){ 
    if (one.data != two.data){ 
     return false; 
    } 
    one = one.next; 
    two = two.next; 
    } 
return one == null && two == null; 
} 
+1

** 연결된 ** 목록의 노드이기 때문에. – jonrsharpe

답변

1

각 노드는 자신의 데이터 및 될 것 같지 않는 이중 연결리스트의 이전 항목에 대한 가능성도 목록의 다음 노드에 대한 참조 (과, 보유 이 경우). 따라서 포함 된 스 니펫에 표시된 것처럼 첫 번째 노드 (머리)에 대한 참조 만 있으면 모든 데이터를 얻기 위해 목록 래퍼가 실제로 필요하지 않습니다.