题目链接:
https://leetcode-cn.com/problems/reverse-linked-list/submissions/
题目描述
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
反转链表示意
代码实现
解题思路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:递归
递归实现不太容易理解,下面附解答链接,有兴趣可自行查看: