単鎖を反転LeetCodeトップ100 T206-

単独リンクリストを逆にします。

例:

入力: 1-> 2-> 3-> 4-> 5-> NULLの
 出力: 5-> 4-> 3-> 2-> 1-> NULL

問題解決のアイデア:

アイデアのための公式サイト、よく理解

行うには再帰を使用して、

キーは逆に働くことです。リストの残りの部分が反転したと仮定すると、今どのように私は一部の前でそれを逆にしますか?

仮定のリストです:

nmのノードn(K + 1)が反転した場合、我々は、NKである間。

だから、NK .next.next = nkの。

次の必見ポイントØ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;
    }
}

 

おすすめ

転載: blog.csdn.net/qq_41544550/article/details/92801356