단일 연결리스트를 역방향.
예 :
입력 : 1-> 2-> 3-> 4 -> 5-> NULL의 출력 : 5-> 4-> 3-> 2-> 1-> NULL
문제 해결 아이디어 :
아이디어의 공식 웹 사이트는, 잘 이해
할 재귀를 사용하여,
열쇠는 반대로 작동하는 것입니다. 리스트의 나머지가 반전되었다고 가정하면, 지금 어떻게 부품의 앞에 그것을 반대합니까?
가정의 목록입니다 :
㎚에 노드 N (K + 1)가 반전 한 경우는 NK에있는 동안.
그래서, 북한 .next.next = 북한.
의 다음 필수 포인트 Ø의 N1 것을주의해야합니다. 당신이 이것을 무시하면 목록이주기에서 발생 될 수있다. 당신이 테스트 코드 크기 2로 목록을 사용하는 경우,이 오류를 잡을 수 있습니다.
코드 :
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode p = reverseList(head.next);
head.next.next = head;
head.next = null;
return p;
}
}