刷题LeetCode:206.反转链表

105 阅读1分钟

题目链接:  leetcode-cn.com/problems/re…

题目描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

刷题LeetCode:206.反转链表

代码实现

解题思路1:迭代

遍历链表,当前节点的 next 指针指向前一个节点,因而需要存储前一个节点。

/**
 * 迭代
 * 遍历链表,当前节点的 next 指针指向前一个节点,因而需要存储前一个节点。
 *
 时间复杂度:O(n),其中 n 是链表的长度。需要遍历链表一次。
 空间复杂度:O(1)。

 * @param head
 * @return
 */
public ListNode reverseList(ListNode head) {
    ListNode result = null;

    if (head == null) {
        return result;
    }

    while (head != null) {
        ListNode curr = head;
        head = curr.next;
        // 变更指向
        curr.next = result;
        result = curr;
    }

    return result;
}

解题思路2:递归

递归实现不太容易理解,下面附解答链接,有兴趣可自行查看:

leetcode-cn.com/problems/re…