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

刷题刷到最后,我更确定:真正拉开差距的是这 5 种编程能力

刷题刷到最后,我更确定:真正拉开差距的是这 5 种编程能力

很多人看到我整理的coding,第一反应都会很直接:

“这不就是在刷题吗?”

如果只看目录,这么理解当然不奇怪。后面确实是一道道编程题,从两数之和、滑动窗口、链表、二叉树,到动态规划、图论、Trie、LRU 缓存,一路排到了107题。

但把这件事完整做下来之后,我反而越来越确定一件事:

真正拉开编程能力差距的,从来不是你刷了多少题,而是你有没有借这些题,把一套稳定的问题解决能力练出来。

这篇文章,我想认真把这件事讲清楚。

我后来不再把刷题当成“数量游戏”

我一开始也经历过那种很典型的刷题状态。

找一份热题清单,每天做几道;不会的时候看题解;看懂了就觉得“这题过了”;过几天再遇到一个变形题,又开始卡住。表面上看题在增加,实际上很多题只是短暂留在记忆里,并没有真正沉淀成方法。

后来我越来越不满意这种节奏。不是因为题不够多,而是因为每道题都像孤岛。

你可能做过两数之和,也做过无重复字符的最长子串,做过岛屿数量,做过零钱兑换,甚至看过 LRU 缓存的经典做法。但如果这些内容最后在脑子里只剩下“题号”和“答案”,它们对真实编程能力的帮助其实很有限。

所以我后来整理1.coding时,最在意的已经不是“还差多少题”,而是另一个问题:

这些题,能不能被组织成一条清晰的能力成长路径?

也正因为这个出发点,这107道题最后被归到了15个核心模块里。它不再只是一个题单,而更像一条系统训练路径。

这 5 种能力,才是我最想留下来的部分

如果只把编程题理解成面试准备,我会觉得有点可惜。因为当你真的把一套高频题系统走下来,最后被训练出来的,往往不是“会不会某一题”,而是下面这5种底层能力。

第一种,是模式识别能力。

真正有效的刷题,不是看到题先想“我做过没有”,而是先判断:这更像哈希表、双指针、滑动窗口,还是 DFS、BFS、DP。两数之和背后是互补查找,最小覆盖子串背后是窗口控制,岛屿数量背后是图搜索,零钱兑换背后是状态设计。你一旦开始用“模式”看题,题目之间就会被真正连起来。

第二种,是数据结构选择能力。

很多题最后拉开差距的地方,不是算法多花哨,而是你有没有先选对结构。什么时候该用dict做 O(1) 查找,什么时候该用set判存在,什么时候该用deque维护队列,什么时候该用堆处理 Top-K,什么时候必须上链表、树、图、Trie,这些判断会越来越敏感。写代码的人其实都知道,很多效率差距不是出在“写没写循环”,而是出在“信息怎么组织”。

第三种,是复杂度意识。

很多题如果只是追求“能跑通”,并不难。真正有门槛的是,你能不能在时间和空间限制里,把它写成一个更合理的解。为什么双循环不行,为什么有些题更适合哈希,为什么搜索题必须剪枝,为什么动态规划的状态设计一旦错了,复杂度就会直接失控。这些都不是题解末尾顺手一写的附属内容,它本身就是思考过程的一部分。

第四种,是从暴力到最优的优化链路。

这也是我后来特别重视的地方。我一直不太喜欢那种上来直接给最优解的题解,因为它会制造一种错觉,好像答案是凭空跳出来的。但真实思考从来不是这样。更自然的路径应该是:先接受最直观的暴力思路,再定位瓶颈,判断问题出在重复计算、查找效率、状态维护还是搜索空间,然后再选择合适的工具去优化。两数之和从双循环到哈希表,零钱兑换从爆搜到记忆化搜索或 DP,LRU 缓存从普通容器模拟到哈希表加双向链表,这条推导链本身就非常值钱。

第五种,是结构化表达能力。

很多人会忽略这一点,但我自己越来越看重。做到后面你会发现,真正拉开差距的,已经不是“能不能写出来”,而是“能不能讲清楚为什么这么写”。你能不能说明白性能瓶颈在哪,为什么这个结构合适,优化为什么成立,时间复杂度和空间复杂度分别是多少,题目一旦变形解法还能怎么改。这类能力,对面试有用,对日常开发、方案设计、代码评审也一样有用。

107 道题真正的价值,不是“题多”,而是能复用

如果只是想证明“我做过很多题”,其实根本没必要把这件事做得这么完整。

真正让我愿意持续整理下去的,是我越来越确信:一套内容的价值,不该只停留在“把答案写出来”,而应该尽量让每一题都变成一个可复用的训练单元。

所以我会尽量保留这些东西:

  • 题目描述和约束条件
  • 边界用例
  • 从直觉解法到优化解法的推导过程
  • 多解法对比
  • 复杂度分析
  • 面试现场该怎么讲
  • 工程实战里它对应的意义

这也是为什么我会把107道题归到15个模块里去看。因为当题目变成结构化路径之后,你复习的就不再只是“上一题答案是什么”,而是“这一类问题该怎么拆、怎么选结构、怎么控复杂度、怎么解释方案”。

这和单纯积累熟悉感,是两件完全不同的事。

如果你现在也在刷题,我更建议这样用它

如果让我用现在的理解,给正在刷题的人几个更有效的建议,我会更推荐下面这套顺序:

  1. 每做一道题,先别急着看答案,先判断它属于哪一类模式。
  2. 写解法时,先想数据结构,再想代码流程。
  3. 不要只记最优解,要把“从暴力到优化”的推导链自己走一遍。
  4. 做完之后,试着不用代码,直接把思路讲给别人听。
  5. 复习时按模块回看,不要按题号零散回看。

我后来越来越相信,真正有长期价值的刷题,不是把更多题做过一遍,而是把陌生问题变成熟悉方法。

前者更像记忆和熟练度,后者才更接近真正的编程能力。

所以现在如果再有人问我,这107道题最大的作用到底是什么,我大概不会只回答“面试高频题”。

我更愿意说:

它们是一套非常高密度的编程思维训练。

题目只是入口,真正被训练出来的,是你面对复杂问题时的反应方式。而这,可能才是刷题这件事最值得投入的地方。


如果这篇对你有用,可以顺着这条线继续往下看:

  1. 完整代码和持续更新在 GitHub:
    https://github.com/tingaicompass/AI-Compass
  2. 这类系统化长文,会继续更新在公众号「汀丶人工智能」
  3. 更细的项目复盘、答疑和资料沉淀,会放在知识星球「AI-Compass」

http://www.jsqmd.com/news/652931/

相关文章:

  • CVPR2020 ECA-Net避坑指南:自适应卷积核大小怎么选?实测对比告诉你答案
  • QPS 与 TPS 的核心区别
  • 2026个人创业项目,0基础做门店WiFi商业变现
  • TCON技术解析:从LVDS到HDMI2.0的信号处理与显示控制
  • AI元人文:维特根斯坦的“不可言说”
  • 150个免费Nuke插件:从新手到专家的终极生存指南
  • AI服务治理不是选择题,而是生存线:2024Q3起欧盟AI Act与国内《生成式AI服务管理暂行办法》双合规倒计时
  • 人工智能之数学基础:求解非线性约束
  • Spring Boot一键限速:守护你的接口“高速路”
  • 【独立开发2】- Netunnel 内网穿透软件 - 你也在找无限制、便宜的吗?
  • 从零开始:用QtPropertyBuilder打造可视化配置工具(含常见问题解决方案)
  • 从播客到ASMR:用Python给音频做“美容”,聊聊降噪背后的信号处理小知识
  • 如何统计SQL分组汇总数据_详解GROUP BY与HAVING用法
  • 经济专业想升职加薪学数据分析的价值分析
  • AutoGod:安卓-全兼容!一站式自动化框架,开发效率直接拉满
  • RimSort终极指南:免费开源的RimWorld模组管理器完全教程
  • 中国AI绕过大模型直奔Agent时代:成本优势凸显,商业化加速但仍面临边界挑战
  • Cadence Allegro 17.4 里 Sub-drawing 功能到底怎么用?手把手教你复用PCB走线,效率翻倍
  • 保姆级教程:在DataGrip 2023.3中配置TDengine 3.x的JDBC驱动(附驱动包下载)
  • 系统故障排查思路
  • 【SITS2026权威解读】:生成式AI应用标准首次落地,企业合规避坑必读的5大核心条款
  • RNNK Demo代码(retinaface,facenet,airockchipyolov5)模型转化遇到的问题
  • Nacos单机模式安装后,除了8848登录页,你还需要检查这3个关键服务状态
  • 3大挑战与i茅台智能预约系统的架构破局之道
  • 我国软件工程标准化工作的总原则是向国际标准靠拢,对于能够在我国适用的标准全部按等同采用的方法
  • 如何高效使用LRCGET:离线歌词同步完整指南
  • ROS2 Python 教学合并版:从环境搭建到 Topic 通信实战
  • 解决篡改猴开启开发者模式后,脚本没有生效的情况
  • 生成式AI安全审计方案落地全图谱(2024金融/医疗双行业实测版)
  • 元机器人Project MetaGenesis 项目立项申请书