【剑指offer刷题日记 Java版】24. 反转链表

147 阅读1分钟

题目

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

解法一 新建dummy Node

class Solution {
    public ListNode reverseList(ListNode head) {
        // 如果头节点为空或者只有一个节点,反转了也是本身
        if(head == null || head.next == null) return head;
        
        // 新建一个dummy node 来作为虚假的head前置节点
        ListNode dummy = null;
        ListNode cur = head;
        ListNode prev = dummy;
        
        while(cur != null){
            ListNode temp = cur.next;
            cur.next = prev;
            prev = cur;
            cur = temp;
        }

        return prev;
    }
}

时间复杂度:O(n)

空间复杂度: O(1)