> 娱乐
链表反转是什么意思(链表反转算法图解)
导语:3分钟透彻链表反转
给你单链表的头节点 `head` ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]``
示例 2:
输入:head = [1,2]输出:[2,1]
示例 3:
输入:head = []输出:[]
提示:
- 链表中节点的数目范围是 `[0, 5000]`
- `-5000 <= Node.val <= 5000`
进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
思路:
方法一:递归
public ListNode reverseList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode cur = head; ListNode newHead = reverseList(head.next); cur.next.next = cur; cur.next = null; return newHead; }
方法二:非递归
public ListNode reverseList(ListNode head) { ListNode pre = null; ListNode cur = head; while (cur != null) { ListNode next = cur.next; cur.next = pre; pre = cur; cur = next; } return pre; }
本文内容由小里整理编辑!