链表 - LeetCode 206.反转链表
2023-11-01 本文已影响0人
我阿郑
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
// 示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
方法:迭代(双指针)
遍历链表,并在访问各节点时修改 next
引用指向
1、需要temp节点,存储cur.next
2、让cur.next 反过来指向pre
3、再让pre 和 cur 都向后移动一步
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = head, pre = null;
while(cur != null) {
ListNode tmp = cur.next; // 暂存后继节点 cur.next
cur.next = pre; // 修改 next 引用指向
pre = cur; // pre 暂存 cur
cur = tmp; // cur 访问下一节点
}
return pre;
}
}
复杂度分析:
时间复杂度O(N) : 遍历链表使用线性大小时间。
空间复杂度O(1) : 变量 pre
和 cur
使用常数大小额外空间。