剑指offer刷题记录
发布日期:2021-05-28 16:52:44 浏览次数:33 分类:精选文章

本文共 1369 字,大约阅读时间需要 4 分钟。

剑指offer刷题记录总结

从2019年9月10日起,我开始了对剑指offer系列题目的系统性挑战。这一段时间,我不仅复习了大量编程知识,还积累了丰富的实践经验。本次刷题记录将从P01到P67,涵盖了链表、栈、队列、二叉搜索树、二叉树遍历、数学问题、动态规划等多个核心领域的练习。


刷题总览

刷题时间线

  • 2019.9.10-2019.9.13:奋力攻克基础题(P01-P07)和递归算法(P08-P11)
  • 2019.9.14-2019.9.16:深入理解动态规划、数组操作(P20-P32)和字符串处理(P33-P36)
  • 2019.9.17-2019.9.21:忙于服务器搭建与个人主页维护,暂时未刷题
  • 2019.9.22-2019.9.28:系统性攻略难题(P35-P67),完成了具代表性的剑指offer挑战

这次刷题经历让我对许多经典题型有了更深刻的理解,同时也意识到有许多地方需要持续巩固。


每日刷题记录

第1天:P01-P03基础题解析

  • P01:二维数组查找
    思路:采用分区查找策略,由左上角或右上角开始,类似的常规问题。
  • P02:替换空格
    思路:从后往前遍历替换,避免移动,保证时间复杂度为O(n)。
  • P03:链表逆序打印
    不建议反转链表,直接逆序遍历添加到vector中,层序问题常用队列。

第2天:P04-P07深入理解基础知识

  • P04:重建二叉树
    思路:递归构建,复习后确需回顾具体实现细节。
  • P05:两个栈实现队列
    思路:push到stack1,pop时将stack1内容到stack2,并pop顶元素。
  • P06:旋转数组最小值
    思路:双指针法,确保避免顺序遍历,时间复杂度可达O(n)。
  • P07:斐波那契数列生成
    思路:快速递归或非递归方法生成数列,避免重复计算。

第3天:P08-P11拓展算法

  • P08:跳台阶
    思路:递归方法优化为O(n)时间复杂度。
  • P09:变态跳台阶
    思路:数学归纳法计算跳法数目,需巩固公式推导。
  • P10:矩形覆盖
    思路:遵循斐波那契规律,F(n) = F(n-1) + F(n-2)。
  • P11:二进制1的个数
    思路:三种实用方法,效果各有千秋。

第4天:P12-P17专项题型复习

  • P12:整数次方计算
    思路:绝对值处理和符号判断,避免溢出问题。
  • P13:数组顺序调整
    思路:双指针、排序或组合法完成任务。
  • P14:链表倒数k结点
    思路:双指针遍历,先走k步然后同步。
  • P15:链表反转
    常见题目,需重点复习。
  • P16:合并有序链表
    思路:构建新链表,采用逐个插入方法。
  • P17:树的子结构识别
    思路:分为两部分检查,需要巩固树的查找算法。

拉伸学习与拓展

  • 二叉树镜像生成:递归思想处理左右子树,确保镜像效果。
  • 顺时针打印矩阵:两次三重循环处理子矩阵,保持清晰的逻辑。
  • 字符串排列:分区策略,逐字符分析,保持效率。
  • 漂亮数生成:分步维护三个指针,确保每个数进入队列。
  • 逆序对计算:适合合并排序优化。

  • 剩余准备

    总体来看,这次刷完剑指offer有助于对编程算法的全面性认识,但我也意识到许多细节需要进一步优化。例如,经典的链表题型、树的遍历题以及动态规划的应用还需要反复练习。

    接下来,我将开始刷LeetCode等国际级编程挑战,同时结合专业课 Frm框架学习,以实现理论与实践的全面提升。

    上一篇:两个无序链表合并成一个有序链表
    下一篇:C/C++字符串变量的声明方式差异

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月19日 05时57分30秒