题目
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例1:
1 | 输入:head = [1,2,3,4,5] |
示例2:
1 | 输入:head = [1,2] |
示例3:
1 | 输入:head = [] |
提示:
- 链表中节点的数目范围是
[0, 5000]
-5000 <= Node.val <= 5000
进阶
链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
解法
解法一:
递归
JAVA
1 | public ListNode reverseList(ListNode head) { |
解法二:
迭代
借助栈,遍历链表,将每个元素入栈。
再次从头遍历链表,它们的值用栈中的元素覆盖即可。
JAVA
1 | public ListNode reverseList(ListNode head) { |
解法三:
原地替换
Java
1 | public ListNode reverseList(ListNode head) { |