反转链表 (剑指offer)
输入一个链表,反转链表后,输出新链表的表头。
方法一:头插法
链表问题通常用指针操作更清晰明了。反转链表只需要把当前指针从指向下一结点转向前一个结点即可。可是这样会导致链表断开。所以需要多加个指针记录后一个结点。
时间复杂度:o(n) 空间复杂度:o(1)
方法二思路:递归
当指针指向nk 时,nk的前面还没有反转,nk的后面已经反转 :
n1 → … → nk-1 → nk → nk+1 ← … ← nm
那么 nk.next.next=nk;
时间复杂度:o(n) 空间复杂度:o(n)
苟有恒,何必三更眠五更起;最无益,莫过一日暴十日寒。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步