牛客:JZ15 反转链表
1.2.1题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
1.2.2解法一:双指针
![image-20210929172010207](https://gitee.com/cyStudy1997/my-summary/raw/master/img/20210929172010.png)
第一层循环
![image-20210929172457213](https://gitee.com/cyStudy1997/my-summary/raw/master/img/20210929172457.png)
第二层循环
![image-20210929173100065](https://gitee.com/cyStudy1997/my-summary/raw/master/img/20210929173100.png)
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null; // 指向最后一个节点null
ListNode cur = head; // 指向头节点
while (cur!=null){
ListNode tmp = cur.next; // 暂存后继节点 cur.next,因为cur.next = pre会使链断开
cur.next = pre; // 修改 next 引用指向
pre = cur; // pre 暂存 cur
cur = tem; // cur 访问下一节点
}
return pre;
}
}
时间复杂度O(N),空间复杂度O(1)