leetcode-206-easy

Reverse Linked List

Given the head of a singly linked list, reverse the list, and return the reversed list.

Example 1:


Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
Example 2:


Input: head = [1,2]
Output: [2,1]
Example 3:

Input: head = []
Output: []
Constraints:

The number of nodes in the list is the range [0, 5000].
-5000 <= Node.val <= 5000
Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both?

思路一:用栈实现链表倒序

public ListNode reverseList(ListNode head) {
    Deque<ListNode> stack = new ArrayDeque<>();

    while (head != null) {
        stack.push(head);
        head = head.next;
    }

    ListNode n = stack.isEmpty() ? null : stack.pop();
    ListNode result = n;
    while (!stack.isEmpty()) {
        n.next = stack.pop();
        n = n.next;
        n.next = null;
    }

    return result;
}
posted @ 2023-01-03 21:36  iyiluo  阅读(26)  评论(0)    收藏  举报