Likou 206逆リンクリスト(反復+再帰)

TOC](目次のタイトルをここに書いてください)

1.タイトル

ここに画像の説明を挿入

2.私の最初の考えと問題

この問題には、反復的かつ再帰的な解決策が必要です。
反復法は単純で簡単です。
再帰については考えていませんでした。再帰的な解決策があることを知っていたので、しばらくはわかりませんでした。解決策を見て理解してください。

3.問題解決方法1:反復

class Solution {
    
    
    public ListNode reverseList(ListNode head) {
    
    
        ListNode prev = null;
        ListNode temp = head;

        while(temp != null){
    
    
            ListNode nextTemp =temp.next;
            temp.next = prev;
            prev = temp;
            temp = nextTemp;
        }
        return prev;
    }
}

ここに画像の説明を挿入

4.問題解決方法2:再帰

class Solution {
    
    
    public ListNode reverseList(ListNode head) {
    
    
        //1.求解基本问题
        if(head == null || head.next == null){
    
    
            return head;
        }
        //2.将大问题如何变成小问题
        ListNode temp = reverseList(head.next);
        //3.小问题的解如何变成大问题的解
        head.next.next = head;
        head.next = null;
        return temp;
    }
}

最初の2つのステップはここに書くことができます。3番目のステップは最初は少しわかりにくいです。たとえば、3-> 4を逆にする場合、head.next.next = head;実現4は3、headを指します。 next = null;実現3nullを指します。後でもう一度練習してください。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/ambitionLlll/article/details/113922043