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

【一篇关于自我刷题的思考】

📝前言说明:
本专栏主要记录本人的基础算法学习以及刷题记录,使用语言为C++。
每道题我会给出LeetCode上的题号(如果有题号),题目,以及最后通过的代码。没有题号的题目大多来自牛客网。对于题目的讲解,主要是个人见解,如有不正确,欢迎指正,一起进步!

🎬个人简介:努力学习ing
📋本专栏:C++刷题专栏
📋其他专栏:C++学习笔记,C语言入门基础,python入门基础,python刷题专栏
🎀CSDN主页 愚润泽

题目

  • 一,来自Deepseek的刷题方法总结
  • 二,灵茶山艾府的文章
  • 三,自我思考总结

一,来自Deepseek的刷题方法总结

  1. 结构化刷题策略
  • 分专题突破(如:数组→链表→树→图→动态规划→回溯→贪心→字符串)
  • 按照难度梯度推进(Easy→Medium→Hard)
  • 同类题目集中训练(如:连续刷3-5道二叉树遍历题)
  1. 黄金三步刷题法
    ① 限时独立解题(30分钟/题)
  • 严格模拟面试环境
  • 记录初始思路和卡点
  • 示例:遇到"两数之和"先思考暴力解再优化

② 深度解析答案

  • 对比自己的解法与最优解
  • 绘制算法流程图
  • 时间复杂度推导(如:O(n²)→O(n)的优化过程)
  • 记录关键代码段(如:双指针的移动条件)

③ 多维总结模板

  • 问题特征(输入规模、数据特点)
  • 解题模式(滑动窗口/前缀和/分治)
  • 易错点(边界条件、特殊用例)
  • 变种可能性(如:三数之和→四数之和)
  1. 知识体系构建技巧
  • 建立算法脑图(如:树相关包含遍历、BST、堆等)
  • 制作错题本(含错误代码+修正版本)
  • 开发代码模板库(如:二分查找的三种写法)
// 示例:二分查找模板
int binarySearch(vector<int>& nums, int target) {
    int left = 0, right = nums.size() - 1;
    while(left <= right) {
        int mid = left + (right - left)/2;
        if(nums[mid] == target) return mid;
        else if(nums[mid] < target) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}
  1. 刻意练习方法论
  • 同题多解训练(如:反转链表用迭代/递归/栈三种方式)
  • 定期重刷旧题(间隔1天→3天→1周)
  • 变式题拓展(LeetCode题目的相似题推荐功能)
  1. 思维迁移训练
  • 抽象问题本质(如:岛屿问题本质是连通分量计数)
  • 建立模式识别库
    • 看到"子数组和"→前缀和/滑动窗口
    • 遇到"最短路径"→BFS/Dijkstra
    • 需要"状态转移"→动态规划
  1. 高效工具链
  • 使用LeetCode Notebook记录解题思路
  • 利用VisuAlgo可视化算法流程
  • 制作Anki卡片记忆核心公式(如:排列组合公式)
  1. 实战提升技巧
  • 参加周赛/双周赛(锻炼限时解题能力)
  • 参与代码评审(学习他人优秀解法)
  • 录制解题视频(通过讲解加深理解)
  1. 动态规划专项训练法
    ① 建立DP分析框架:
  • 状态定义 → 转移方程 → 初始条件 → 遍历顺序
    ② 经典题目阶梯:
  1. 爬楼梯(基础递推)

  2. 打家劫舍(状态选择)

  3. 零钱兑换(完全背包)

  4. 最长公共子序列(二维DP)

  5. 编辑距离(复杂状态转移)

  6. 复杂度控制意识培养

  • 数据规模预判法:
    10^6 → O(n)
    10^3 → O(n²)
    20 → O(2^n)
  • 空间优化技巧(滚动数组、状态压缩)
  1. 持续进步机制
  • 每月制作知识雷达图(算法/数据结构/编码能力)
  • 建立个人进度看板(待学习/掌握中/已精通)
  • 参与开源项目算法模块(如:参与C++ STL优化)

关键要点:

  1. 每道题至少经过3次迭代:初解→优化→总结
  2. 每周留出2小时进行专题复习
  3. 建立自己的模式识别库(如:看到拓扑排序立即想到入度表)
  4. 对经典题要做到肌肉记忆(如:快速写对快排)

示例学习路径:
第1周:数组+双指针(15题)
第2周:链表+虚拟头节点(10题)
第3周:二叉树+递归(20题)
第4周:回溯+剪枝(15题)

每月末进行综合训练

通过这套方法,当遇到新题时你会:

  1. 快速识别题目类型
  2. 调取相关解题模式
  3. 构建解决方案框架
  4. 避免常见错误陷阱
  5. 优化时间和空间复杂度

二,灵茶山艾府的文章

文章链接:https://leetcode.cn/discuss/post/3141566/ru-he-ke-xue-shua-ti-by-endlesscheng-q3yd/

三,自我思考总结

  1. 系统刷题可能比散刷更好,但不代表散刷没有好处。当我们要熟悉某一个数据结构的时候,比如栈,队列…散刷可以让我们快速熟悉他们的特点,已经它们的方法和接口。但是,如果想实际提高自己的算法思想的时候,还是得系统刷更合适,并且要对同类型的题型进行集中练习
  2. 质量>数量,题目的质量不难保证。问题是刷题的质量:做题时,做题后。
  3. 做题时:要保证独立的思考,哪怕错误的思考也是有意义的,给自己每道题定一个刷题时间限制
  4. 写题时,注重思路的体现。对于新手而言,把代码写的简洁固然是好事,但是当前水平下能力不足,多写几个if else,不代表代码不好。前期只要达到代码中没有太多冗余的部分就好。
  5. 做题后,写没写出来的结果不重要,时间结束后,先看容易理解的题解,对比自己的思路,有哪些“新方法”或者“卡壳点”,当掌握好基本的解法以后,再去探究更好的解法,但是偏难怪的,超出能力范围的,不常见的解法不要过度研究
  6. 复盘与总结,复盘时间间隔从短到长:1天 → 3天 → 7天,这三次复盘是必须的,后续的复盘看自我掌握情况。复盘时,注重总结专题中的方法。
  7. 能力到达一定程度后,参加周赛等,进一步感受真实场景,提升能力

相信自己,刷题是一个痛苦且漫长的过程,需要好好沉淀,加油!
在这里插入图片描述

🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关文章:

  • 使用Python进行AI图像生成:从GAN到风格迁移的完整指南
  • 如何安装git?
  • 智能Todo协作系统开发日志(二):架构优化与安全增强
  • 算法题(125):子集
  • AJAX与Axios基础
  • 网页爬虫--赶集网租房信息爬取(Python)
  • 开源模型应用落地-模型上下文协议(MCP)-第三方MCP Server实战指南(五)
  • 机器学习 从入门到精通 day_05
  • 生成式引擎优化(GEO)发展史与行业标准演变
  • (三) 傅里叶变换:把信号拆成音符的秘密
  • 【LLM】解锁Agent协作:深入了解谷歌 A2A 协议与 Python 实现
  • 邮件发送频率如何根据用户行为动态调整?
  • # 更换手机热点后secureCRT无法连接centOS7系统
  • 入门-C编程基础部分:2、第一个程序
  • 从零开始学习SLAM | 用四元数插值来对齐IMU和图像帧
  • 基于ESP32-S3 蓝牙SDK封装设计
  • 阿里计算机专业面试宝典1
  • javaweb的基础2
  • 【计算机网络】什么是路由?核心概念与实战详解
  • 群晖如何通过外网访问
  • 成都一季度GDP为5930.3亿元,同比增长6%
  • 第四届全民阅读大会在太原举办,李书磊出席并讲话
  • 印控克什米尔恐袭引爆印巴新一轮外交摩擦,地区安全风险骤增
  • 沂水县委书记陈士贤,跨市履新泰安市委常委、组织部部长
  • 习近平举行仪式欢迎肯尼亚总统鲁托访华
  • 新东方:2025财年前三季度净利增29%,第四财季海外业务将承压