力扣206 反转链表
题目:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
双指针法:
两个指针,cur指向当前节点,用来遍历,pre指向上一节点。
null | 1 | 2 | 3 | 4 | 5 |
pre | cur |
cur在前面走,把指针甩向上一节点。最终返回反转链表头结点pre。
1 | 2 | 3 | 4 | 5 | null |
pre | cur |
class Solution { public ListNode reverseList(ListNode head) { ListNode pre = null; ListNode cur = head; ListNode temp = null; while (cur != null) { temp = cur.next;// 保存下一个节点 cur.next = pre;// 当前节点指向前一节点 //往前走一步 pre = cur; cur = temp; } return pre;//此时pre指向反转链表头结点,返回反转后的链表 } }
递归法:
class Solution { public ListNode reverseList(ListNode head) { return reverse(null,head);//第一层:pre=null,cur=head } public ListNode reverse(ListNode pre, ListNode cur){ if(cur==null){ return pre;//返回反转链表 } ListNode temp=null; temp=cur.next; cur.next=pre; return reverse(cur,temp);//第n层:pre=cur,cur=temp } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY