当前位置: 首页 > article >正文

反转链表,剑指offer,力扣

目录

解题方法:

难度分析:

解题思路(迭代):

代码实现:

代码(递归):


题目地址:

206. 反转链表 - 力扣(LeetCode)

难度:简单

今天刷反转链表,大家有兴趣可以点上看看题目要求,试着做一下

我们直接看题解吧:

解题方法:

方法1、迭代(时间复杂度(1))

方法2、递归(时间复杂度(n))

难度分析:

这道题是不难,应该算是基础的题目了,递归方法比较难理解一点

解题思路(迭代):

假设链表为1->2->3->null,我们需要把它改成null->1->2->3

在遍历链表时,将当前节点的next 指针改为指向前一个节点,由于节点没有设引用前一个节点,因此必须事先存储其前一个节点,在更改的引用之前,由于节点没有设引用前一个节点,最后返回新的头引用。

代码实现:

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;
    }
}



代码(递归):

class Solution {
    public ListNode reverseList(ListNode head) {
        return recur(head, null);    // 调用递归并返回
    }
    private ListNode recur(ListNode cur, ListNode pre) {
        if (cur == null) return pre; // 终止条件
        ListNode res = recur(cur.next, cur);  // 递归后继节点
        cur.next = pre;              // 修改节点引用指向
        return res;                  // 返回反转链表的头节点
    }
}


http://www.kler.cn/a/132938.html

相关文章:

  • 推荐一个基于协程的C++(lua)游戏服务器
  • git配置用户信息
  • Spring 中的 BeanDefinitionParserDelegate 和 NamespaceHandler
  • 【PYTORCH】使用MTCNN和InceptionResnetV1简单进行人脸检测和相似度匹配
  • PostgreSQL物化视图详解
  • 利用Blackbox AI让编程更轻松
  • 无线WiFi安全渗透与攻防(六)之WEP破解-Gerix-wifi-cracker自动化破解WEP加密
  • 组合模式 rust和java的实现
  • 【机器学习9】前馈神经网络
  • 利用 Pandoc + ChatGPT 优雅地润色论文,并保持 Word 公式格式:Pandoc将Word和LaTeX文件互相转化
  • 开源情报 (OSINT)
  • 2023年中职“网络安全“—Web 渗透测试②
  • 100张照片带你了解真实的日本人
  • 2023全新付费进群系统源码 带定位完整版 附教程
  • 功能具象化复盘
  • vite vue3 配置pinia
  • 如何理解IOC中的反射操作
  • 单元测试实战(一)Controller 的测试
  • 【力扣】从零开始的动态规划
  • 无线WiFi安全渗透与攻防(N.1)WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速
  • 大数据HCIE成神之路之数学(2)——线性代数
  • 【论文阅读】A Survey on Video Diffusion Models
  • ES Kibana windows 安装
  • LabVIEW关于USRPRIO的示例代码
  • Curl命令
  • Linux安装OpenCV并配置VSCode环境