首页/新闻资讯/正文详情

算法刷题笔记:动态规划与优先队列实战解析

发布时间:2026/11/5 2:58:05 来源:云帆数科 栏目:资讯中心
算法刷题笔记:动态规划与优先队列实战解析
1. 刷题笔记的价值与意义作为一名程序员我坚持刷算法题已经三年多了。2026年1月22日这天的刷题笔记特别值得记录因为这天遇到的几道题目涵盖了多个经典算法模式。刷题不仅仅是应付面试的手段更是锻炼编程思维的有效方式。算法题就像健身房的器械训练每道题都在针对性地锻炼特定的思维肌肉。通过系统性地记录和整理刷题笔记可以清晰地看到自己的进步轨迹也能在遇到类似问题时快速回顾解题思路。2. 当日刷题题目概览2.1 题目选择策略我通常会按照1简单2中等1困难的比例来选择每日刷题组合。2026.1.22这天选择的题目是简单题两数之和经典热身题中等题二叉树的中序遍历递归与迭代实现中等题最长回文子串动态规划解法困难题合并K个升序链表优先队列应用提示建议每次刷题都包含不同难度这样既能保持信心又能持续挑战自己。2.2 刷题环境配置我的刷题环境配置如下IDEVS Code LeetCode插件语言Python 3.9兼顾简洁与效率辅助工具本地测试用例生成脚本笔记工具Markdown格式记录同步到GitHub# 本地测试用例示例 def test_two_sum(): nums [2,7,11,15] target 9 assert two_sum(nums, target) [0,1]3. 题目详解与解题思路3.1 两数之和的多种解法这道经典题目看似简单但蕴含着多种解题思路暴力枚举法双重循环时间复杂度O(n²)哈希表法空间换时间时间复杂度O(n)排序双指针法需要额外空间存储索引def two_sum(nums, target): hashmap {} for i, num in enumerate(nums): complement target - num if complement in hashmap: return [hashmap[complement], i] hashmap[num] i return []注意哈希表解法要注意处理重复元素的情况测试用例要考虑边界条件。3.2 二叉树中序遍历的迭代实现递归解法虽然简洁但理解迭代解法对掌握栈的应用很有帮助def inorder_traversal(root): res [] stack [] curr root while curr or stack: while curr: stack.append(curr) curr curr.left curr stack.pop() res.append(curr.val) curr curr.right return res关键点使用栈模拟递归调用先一路向左到底处理节点后再转向右子树3.3 最长回文子串的动态规划解法这道题展示了动态规划的典型应用定义dp[i][j]表示s[i...j]是否为回文状态转移方程基本情况单个字符是回文两个相同字符是回文更长串首尾相同且中间是回文def longest_palindrome(s): n len(s) dp [[False]*n for _ in range(n)] res for l in range(n): for i in range(n-l): j i l if l 0: dp[i][j] True elif l 1: dp[i][j] (s[i] s[j]) else: dp[i][j] (s[i] s[j] and dp[i1][j-1]) if dp[i][j] and l1 len(res): res s[i:j1] return res3.4 合并K个升序链表的优先队列解法这道困难题展示了优先队列堆的典型应用场景import heapq def merge_k_lists(lists): dummy ListNode(0) curr dummy heap [] for i in range(len(lists)): if lists[i]: heapq.heappush(heap, (lists[i].val, i)) lists[i] lists[i].next while heap: val, i heapq.heappop(heap) curr.next ListNode(val) curr curr.next if lists[i]: heapq.heappush(heap, (lists[i].val, i)) lists[i] lists[i].next return dummy.next优化点使用元组存储值和链表索引每次只push一个节点保持堆的大小为O(k)时间复杂度O(Nlogk)N是总节点数4. 刷题技巧与经验分享4.1 高效刷题的方法论分类刷题法按算法类型集中练习如一周专攻动态规划五步解题法理解题意列举可能的解法选择最优解法编写代码测试与优化错题本机制记录错误原因和正确思路4.2 常见错误与调试技巧典型错误案例边界条件处理不当空输入、单个元素等循环终止条件错误指针/索引越界特殊数据结构使用不当调试技巧使用print语句输出中间变量绘制数据结构变化图编写测试用例覆盖边界条件使用调试器逐步执行4.3 刷题的时间管理我个人的时间分配建议15分钟理解题目和思考解法20分钟实现第一种解法15分钟优化和测试10分钟记录笔记和总结如果超过这个时间还没思路建议查看题解但一定要自己重新实现一遍。5. 刷题笔记的整理方法5.1 笔记内容结构每道题的笔记应包含题目描述用自己的话复述解题思路多种解法比较代码实现带注释复杂度分析相关题目链接5.2 知识图谱构建我使用思维导图工具将算法知识点连接起来例如动态规划 → 背包问题 → 子集和问题树 → 遍历方式 → 递归/迭代实现图 → DFS/BFS → 拓扑排序5.3 定期回顾机制我设置了以下回顾周期次日快速浏览前一天笔记周末总结本周刷题情况月末整理高频考点和薄弱环节6. 从刷题到面试的转化6.1 面试中的表达技巧在面试中讲解算法题时要注意先明确问题边界和假设讨论时间和空间复杂度权衡考虑可能的优化方向处理面试官的follow-up问题6.2 实际工程中的算法应用刷题中学到的算法在实际工作中的典型应用哈希表缓存实现、去重优先队列任务调度图算法社交网络分析字符串算法搜索引擎6.3 持续学习的资源推荐我常使用的进阶资源《算法导论》经典教材LeetCode讨论区优质题解算法可视化网站直观理解技术博客实战经验分享刷题三年多来最大的体会是算法能力的提升不是线性的而是阶梯式的。每次突破一个瓶颈期解决问题的能力就会上一个新台阶。2026.1.22这天的刷题笔记记录了我在动态规划和优先队列应用上的新理解也为后续的算法学习打下了更坚实的基础。

相关推荐

AI函数调用技术:原理、实践与优化
AI函数调用技术:原理、实践与优化

1. 函数调用在AI领域的革命性意义当我在2023年首次接触OpenAI的function calling特性时,立刻意识到这将是AI应用开发的分水岭。传统AI对话系统最大的痛点在于:大语言模型虽然能生成流畅的文本,却难以精准触发外部操作。就像一位知识渊博的顾问… · 2026/11/5 2:58:05

数据分析师转型AI产品经理的四大黄金赛道
数据分析师转型AI产品经理的四大黄金赛道

1. 数据分析师职业转型的现状与挑战2026年的数据分析领域正在经历一场前所未有的变革。传统的数据分析师如果仍然只关注SQL查询、Excel报表和基础统计模型,很快就会发现自己的职业发展遇到天花板。我见过太多同行把90%的时间花在模型调参上,却忽略了行业… · 2026/11/5 2:58:05

从ElasticBeanstalk迁移到ECS的实战经验与优化策略
从ElasticBeanstalk迁移到ECS的实战经验与优化策略

1. 为什么选择从ElasticBeanstalk迁移到ECS?三年前我第一次用ElasticBeanstalk部署Laravel应用时,觉得这种"一键部署"的服务简直是开发者的福音。但随着业务量增长到日均10万PV后,EB的局限性开始显现:固定的EC2实例规格… · 2026/11/5 2:58:05

零基础3个月速成网络安全工程师实战指南
零基础3个月速成网络安全工程师实战指南

1. 项目概述作为一名在网络安全领域摸爬滚打多年的从业者,我经常被问到同一个问题:"零基础如何快速入门网络安全?"今天我就把自己当年用3个月时间从完全不懂到能够独立完成基础渗透测试的学习路径完整分享出来。这份清单之所以被称… · 2026/11/5 4:40:54

AI驱动的数据采集:Bright Data MCP与Trae实践指南
AI驱动的数据采集:Bright Data MCP与Trae实践指南

1. 项目概述:AI时代的数据采集新范式最近半年我一直在探索如何将AI能力融入传统数据采集工作流。作为一名长期从事网络数据采集的开发者,我深刻感受到大模型技术对爬虫领域的颠覆性影响。过去我们需要花费大量时间处理反爬机制、解析网页结构、维护代理I… · 2026/11/5 4:40:54

Java C++算法题解leetcode801使序列递增的最小交换次数
Java C++算法题解leetcode801使序列递增的最小交换次数

前言 LeetCode 801 的题意是:给定两个长度相同的整数数组 nums1 和 nums2,每次操作可以交换某个下标 i 上的两个元素,问最少交换多少次,能使两个数组都严格递增。题目保证答案存在。 这道题最容易掉进的坑是贪心:看到某… · 2026/11/5 4:40:54

基于ECharts的实时天气可视化开发实践
基于ECharts的实时天气可视化开发实践

1. 项目背景与核心价值去年夏天帮朋友改造民宿时,发现他们前台用的天气显示还是老式LED屏,不仅信息单一,遇到极端天气也缺乏预警提示。于是用周末时间做了这个网页版天气可视化工具,现在已经成为他们日常运营的标配。相比传统方案… · 2026/11/5 4:40:54

MySQL 把 GROUP_CONCAT 结果当 IN 条件失效的原因与改写
MySQL 把 GROUP_CONCAT 结果当 IN 条件失效的原因与改写

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 4:40:54

TED精读如何训练高阶英语思维与认知能力
TED精读如何训练高阶英语思维与认知能力

1. 项目概述:这不是一节普通英语课,而是一次认知升级的实操训练“跟TED演讲学英文:How AI can save our humanity by Kai-Fu Lee”——这个标题乍看是语言学习类内容,但真正懂行的人一眼就能看出,它根本不是在教“how … · 2026/11/5 4:39:54

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码