Leetcode - Reverse Linked List

My code:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null)
            return head;
        // /** iterative */
        // ListNode pre = head;
        // ListNode curr = head.next;
        // while (curr != null) {
        //     ListNode temp = curr.next;
        //     curr.next = pre;
        //     pre = curr;
        //     curr = temp;
        // }
        // head.next = null;
        // return pre;
        /** recursive */
        ListNode tail = head;
        while (tail.next != null)
            tail = tail.next;
        reverse(head);
        return tail;
    }
    
    private ListNode reverse(ListNode head) {
        if (head == null || head.next == null)
            return head;
        ListNode pre = reverse(head.next);
        pre.next = head;
        head.next = null;
        return head;
    }
}

這道題目用兩種方法實現(xiàn)了反轉鏈表。
一種是直接遍歷,一邊遍歷一邊反轉。
一種是,用遞歸實現(xiàn)反轉。

Anyway, Good luck, Richardo!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容