反转链表
描述
给定一个单链表的头结点 pHead
(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围: 0≤n≤1000
要求:空间复杂度 O(1) ,时间复杂度 O(n)
示例1
1 | 输入: {1,2,3} |
示例2
1 | 输入: {} |
题解
newHead
表示已反转链表头部pHead
表示当前链表发转的节点pNext
表示未反转链表的头部保存
pHead
的下一个节点
当链表反转时,需如下步骤:
- 保存
pHead
的下一个节点. 防止后续链表丢失 - 将
pHead
指向newHead
,完成节点反转 - 更新
newHead
为pHead
,将完成的反转节点加入链表 - 更新
pHead
,继续反转依旧未反转的链表
1 | package main |