剑指 Offer - 15 - 反转链表

发布于 2024-06-27 07:55:39 字数 1170 浏览 28 评论 0

题目

输入一个链表,反转链表后,输出新链表的表头。

解析

这个题目和 LeetCode206 是一样的。解析也可以看那篇博客。两种思路:

思路一:

  • 很经典的翻转链表的题目,使用 pre、next 指针, pre 指向当前 cur 的前一个, next 是当前 cur 的下一个指针;
  • 然后每次都改变 curnext 为 pre,循环递推,直到 cur = null ,最后返回 pre
public class Solution {
    
    public ListNode ReverseList(ListNode head) {
        ListNode pre = null, cur = head, next;
        while (cur != null) {
            next = cur.next;
            cur.next = pre;//反转
            pre = cur;//继续下一次
            cur = next;
        }
        return pre;
    }
}

思路二:递归

思路和上面还是一样的,就是 pre = cur,cur = next 这两行替换成去递归了,没什么特殊的。

public class Solution {

    public ListNode ReverseList(ListNode head) {
        return reverse(head, null);
    }

    private ListNode reverse(ListNode cur, ListNode pre) {
        if (cur == null)
            return pre;
        ListNode next = cur.next;
        cur.next = pre;
        return reverse(next, cur);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

深海夜未眠

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文