LeetCode 面试题三大板块全攻略:算法数据结构数学,实用模板提升解题能力

2025-06-17| 2370 阅读

?算法板块:从基础到进阶的解题密钥


?排序与搜索:高频题型的底层逻辑


排序和搜索是算法题里的 “常客”,不管是简单题还是困难题,总能看到它们的影子。先说排序,冒泡、插入、选择这些基础排序在数据量小的时候还能用,一旦数据量大起来,就得靠归并、快速、堆排序这些时间复杂度更优的算法。归并排序的核心是分治思想,把数组分成两半分别排序,再合并起来,合并的时候用双指针就能搞定。比如合并两个有序数组的模板,先创建一个空数组存结果,然后比较两个数组当前指针指向的元素,把小的放进结果数组,指针后移,直到其中一个数组遍历完,再把另一个数组剩下的元素直接加进去。

搜索里最常见的就是二分查找,不过二分查找的应用场景很严格,必须是有序数组。用二分查找的时候,关键是确定左右边界和 mid 值的计算,还有终止条件和判断条件。比如找第一个大于等于目标值的位置,初始化左边界为 0,右边界为数组长度减 1,然后循环条件是左小于等于右,每次计算 mid=(左 + 右)/2,如果中间值大于等于目标值,就把右设为 mid-1,否则左设为 mid+1,最后左就是所求位置。这里一定要注意数组是否可能为空,以及边界条件的处理,不然很容易越界或者漏解。

?动态规划:状态转移的破题之道


动态规划题很多人觉得难,主要是不知道怎么定义状态和找转移方程。其实状态定义一般就是题目要求的结果,比如求最长递增子序列,状态 dp [i] 就可以定义为以第 i 个元素结尾的最长递增子序列长度。然后找转移方程,就是看这个状态能从哪些前面的状态转移过来,比如对于 dp [i],我们要遍历前面所有 j
还有背包问题,01 背包和完全背包的区别在于物品能不能重复选,状态定义都是 dp [i][j] 表示前 i 个物品装进容量为 j 的背包的最大价值。01 背包的转移方程是 dp [i][j] = max (dp [i-1][j], dp [i-1][j-weight [i]] + value [i]),因为第 i 个物品要么不选,要么选,选的话就得看容量够不够。完全背包因为可以重复选,所以内层循环容量的时候要从前往后遍历,而 01 背包是从后往前,避免重复选同一个物品。做动态规划题一定要多刷题,积累不同类型的状态定义和转移方程,慢慢就能找到感觉。

?贪心算法:局部最优的全局考量


贪心算法的关键是找到正确的贪心策略,也就是每一步都做当前最优的选择,最终能得到全局最优解。比如活动选择问题,选择结束时间最早的活动,这样能给后面留更多时间。还有跳跃游戏,维护一个当前能到达的最远距离,每次遍历到一个位置,就更新这个最远距离为 max (最远距离,当前位置 + 跳跃距离),如果当前位置超过了最远距离,就说明跳不到,返回 false,否则遍历完返回 true。

贪心策略的正确性有时候需要数学证明,比如哈夫曼编码,通过构建最优二叉树来证明贪心选择的正确性。不过平时做题的时候,只要能通过测试用例,并且逻辑上符合局部最优推全局最优的思路,就可以尝试用贪心算法。贪心算法的优势在于时间复杂度低,代码简洁,但是适用场景有限,需要仔细分析题目是否满足贪心的条件,比如是否具有最优子结构和贪心选择性质。

?数据结构板块:不同场景下的工具选择


线性结构:数组与链表的差异运用


数组和链表是最基础的数据结构,它们的特点决定了适用场景不同。数组随机访问速度快,但是插入和删除需要移动元素,适合频繁查询的场景。链表插入删除方便,但是随机访问需要遍历,适合频繁修改的场景。比如反转链表,用迭代的方法,定义三个指针,前驱、当前、后继,每次让当前的 next 指向前驱,然后三个指针依次后移,直到当前为空,前驱就是新的头节点。

操作数组的时候要注意下标越界,尤其是在处理滑动窗口、双指针问题时,比如求数组中元素和为目标值的连续子数组,用双指针 left 和 right 表示窗口的左右边界,sum 表示窗口内元素和,当 sum 大于目标值时,left 右移,减少窗口内元素和,当 sum 小于目标值时,right 右移,增加元素和,直到找到符合条件的窗口。链表操作则要注意头节点的处理,很多时候需要创建一个虚拟头节点,方便操作,比如合并两个有序链表,虚拟头节点的 next 指向合并后的链表,然后用一个指针遍历,比较两个链表当前节点的值,把小的接到后面,直到其中一个链表为空,再把另一个链表剩下的部分接上。

?树与图:层次遍历与深度探索


树的遍历方式有前序、中序、后序的深度优先遍历,还有层次遍历的广度优先遍历。二叉树的中序遍历对于二叉搜索树来说是有序的,这一点经常被用来解决相关问题,比如判断一个二叉树是否是二叉搜索树,就可以通过中序遍历,看结果是否单调递增。层次遍历通常用队列来实现,每次把当前层的节点加入队列,然后遍历队列中的节点,把它们的左右孩子加入下一层的队列,直到队列为空。

图的遍历有深度优先搜索(DFS)和广度优先搜索(BFS),DFS 用递归或者栈实现,BFS 用队列实现。比如判断图中是否存在环,对于有向图和无向图方法不同,无向图在遍历的时候如果发现一个节点的邻接节点已经访问过,并且不是父节点,就说明有环;有向图需要记录节点的访问状态,分为未访问、正在访问、已访问,在 DFS 过程中,如果遇到正在访问的节点,就说明有环。树和图的问题很多时候需要递归的思路,把问题分解成子问题,比如求树的深度,就是左子树深度和右子树深度的最大值加 1。

?栈与队列:特殊场景的高效处理


栈是后进先出,常用于处理需要逆序的问题,比如括号匹配,遇到左括号入栈,遇到右括号就和栈顶的左括号匹配,匹配成功就出栈,否则不合法。还有中缀表达式转后缀表达式,利用栈来存储运算符,根据优先级决定何时入栈和出栈。队列是先进先出,常用于层次遍历、广度优先搜索,还有滑动窗口问题,比如求滑动窗口内的最大值,用双端队列来维护窗口内的元素下标,保证队列中的下标对应的元素是递减的,这样队头就是最大值的下标,窗口滑动时,移除不在窗口内的下标,然后把新元素下标加入队列,同时移除队列中比它小的元素下标,保持队列的递减性。

栈和队列还有一些变形,比如单调栈,用来解决下一个更大元素的问题,遍历数组时,维护一个单调递减的栈,当遇到一个元素比栈顶元素大时,栈顶元素的下一个更大元素就是当前元素,弹出栈顶,直到栈为空或者当前元素不大于栈顶元素,然后将当前元素下标入栈。这些特殊的数据结构用法需要多练习,才能在遇到问题时想到合适的工具。

?数学板块:从基础运算到算法思维


?基础运算:大数处理与模运算技巧


遇到大数运算时,比如两个超大数相加、相乘,不能直接用基本数据类型存储,需要用字符串或者数组来处理。大数相加,先将两个字符串反转,方便从低位开始相加,然后逐位相加,记录进位,最后再反转得到结果。大数相乘,用一个数组存储每一位的乘积,长度为两个数长度之和,然后按位相乘,累加到对应的位置,最后处理进位,去掉前导零。

模运算在数学题中很常见,比如求 (a*b)% m,可以先分别对 a 和 b 取模,再相乘取模,避免溢出。还有快速幂算法,求 a 的 n 次方模 m,用二进制拆分 n,把指数分解成 2 的幂次之和,每次平方取模,根据二进制位是否为 1 来决定是否乘到结果中,这样时间复杂度是 O (logn),比直接循环相乘高效很多。处理负数的模运算时,要注意不同语言的取模规则,通常可以通过加上模数再取模来保证结果为正。

?数论问题:质因数分解与最大公约数


质因数分解可以用试除法,从 2 到根号 n 依次试除,记录每个质因数的指数。比如分解 n,当 i 能整除 n 时,就不断除以 i,记录 i 的次数,直到不能整除,i++,直到 i*i>n,最后如果 n>1,说明还有一个质因数是 n 本身。最大公约数(GCD)常用欧几里得算法,也就是辗转相除法,gcd (a,b)=gcd (b,a% b),直到 b 为 0,返回 a。求多个数的 GCD,可以依次求两个数的 GCD。

还有扩展欧几里得算法,用于求解 ax+by=gcd (a,b) 的一组整数解,这在求解同余方程时很有用。欧拉定理和费马小定理也是数论中的重要知识,费马小定理指出如果 p 是质数,a 和 p 互质,那么 a^(p-1)≡1 mod p,这可以用来简化幂运算的模运算。遇到与质因数、公约数、倍数相关的问题时,先考虑数论的基本方法,往往能找到高效的解法。

?组合数学:排列组合与动态规划结合


排列组合问题需要分清楚是排列还是组合,排列考虑顺序,组合不考虑。计算排列数和组合数时,当 n 和 k 较大时,直接计算阶乘可能会溢出,需要用动态规划或者递推的方式,比如组合数的递推公式 C (n,k)=C (n-1,k)+C (n-1,k-1)。还有隔板法,用于解决相同元素分组的问题,比如把 n 个相同的球放进 k 个不同的盒子,允许空盒,方法数是 C (n+k-1,k-1)。

排列组合常和动态规划结合,比如求不同路径数,从左上角到右下角,只能向右或向下走,网格有 m 行 n 列,那么 dp [i][j]=dp [i-1][j]+dp [i][j-1],初始条件 dp [0][0]=1,第一行和第一列都只有一种走法。还有错排问题,n 个元素的错排数 D (n)=(n-1)*(D (n-1)+D (n-2)),这些问题需要理解背后的数学原理,再结合动态规划的状态转移来解题。

【该文章由dudu123.com嘟嘟 ai 导航整理,嘟嘟 AI 导航汇集全网优质网址资源和最新优质 AI 工具】

分享到:

相关文章

创作资讯2025-03-05

小绿书起号如何找对标账号?新手必学的竞品分析与定位技巧

🎯 找对标账号不是抄作业,是给自己搭起号的「安全网」​​刚在小绿书起号的新手,90% 都会踩一个坑 —— 闷头自己干,写了几十篇笔记没流量才发现,原来早就有人把你想做的内容玩透了。​对标账号的核心作

第五AI
创作资讯2025-02-21

公众号涨粉方法论:从内容定位到裂变增长的系统化运营

做公众号的朋友应该都有同感,现在想让粉丝涨起来真没那么容易。后台数据里的新增粉丝数,有时候少得让人着急。但你看那些做得好的号,粉丝噌噌往上涨,他们到底凭什么?其实关键在于有没有一套能落地的系统化运营方

第五AI
创作资讯2025-04-07

2025年,军事类公众号如何应对粉丝的“催更”?建立内容选题库

在 2025 年的军事类公众号运营中,粉丝 “催更” 已经成为一个普遍的挑战。这背后反映的是用户对优质内容的强烈渴望,以及公众号在内容规划和产出效率上的压力。如何建立一个高效的内容选题库,既满足用户需

第五AI
创作资讯2025-02-03

2025年,公众号矩阵的阅读量和收益,如何做到1+1>2?

🔍 内容差异化:打破信息茧房的破局之道 公众号矩阵要实现阅读量和收益的双重跃升,内容差异化是核心竞争力。很多运营者习惯把同一篇内容分发到多个账号,结果导致用户审美疲劳,反而稀释了流量。2025 年微

第五AI
推荐2025-08-07

力扣模拟面试防作弊指南:双机位 + 实时代码审查策略揭秘

?双机位布置:打造360°无死角面试环境力扣模拟面试的双机位要求让不少同学犯难,其实把它想象成给电脑装个「监控搭档」就简单了。主机位就是咱们平时用的电脑摄像头,记得调整到能露出整张脸和桌面的角度——下巴别藏在阴影里,键盘也别只露出半个。副机位一般用手机支架固定,放在身体侧后方45度角,这个位置既能拍

第五AI
推荐2025-08-07

Examify AI 是一款怎样的考试平台?2025 最新个性化学习计划解析

?精准提分黑科技!ExamifyAI如何重塑2025考试备考模式?一、核心功能大揭秘:AI如何让考试准备更高效?ExamifyAI作为新一代智能考试平台,最吸引人的地方就是它的自适应学习引擎。这个系统就像一个贴心的私人教练,能根据你的答题数据自动调整学习路径。比如你在数学几何题上错误率高,系统会优先

第五AI
推荐2025-08-07

公众号注册的“蝴蝶效应”:一个选择,可能影响未来三年的运营 - 前沿AIGC资讯

你可能觉得公众号注册就是填几个信息的事,殊不知,这里面的每个选择都像蝴蝶扇动翅膀,未来三年的运营轨迹可能就被悄悄改变了。很多人刚开始没当回事,等到后面想调整,才发现处处受限,那叫一个后悔。今天就跟你好好聊聊,注册时那些看似不起眼的选择,到底能给未来的运营带来多大影响。​📌账号类型选不对,三年运营路难

第五AI
推荐2025-08-07

AI写作如何进行事实核查?确保头条文章信息准确,避免误导读者 - AI创作资讯

上周帮同事核查一篇AI写的行业报告,发现里面把2023年的用户增长率写成了2025年的预测数据。更离谱的是,引用的政策文件号都是错的。现在AI生成内容速度快是快,但这种硬伤要是直接发出去,读者信了才真叫坑人。今天就掰开揉碎了说,AI写作怎么做好事实核查,别让你的头条文章变成 误导重灾区 。​📌AI写

第五AI
推荐2025-08-07

10w+阅读量爆文案例拆解分析:高手都从这5个维度入手 - AI创作资讯

🎯维度一:选题像打靶,靶心必须是「用户情绪储蓄罐」做内容的都清楚,10w+爆文的第一步不是写,是选。选题选不对,后面写得再好都是白搭。高手选选题,就像往用户的「情绪储蓄罐」里投硬币,投对了立刻就能听到回响。怎么判断选题有没有击中情绪?看三个指标:是不是高频讨论的「街头话题」?是不是藏在心里没说的「抽

第五AI
推荐2025-08-07

135编辑器会员值得买吗?它的AI模板库和秀米H5比哪个更丰富? - AI创作资讯

📌135编辑器会员值不值得买?AI模板库和秀米H5谁更胜一筹?🔍135编辑器会员的核心价值解析企业级商用保障与效率提升135编辑器的企业会员堪称新媒体运营的「合规保险箱」。根据实际案例,某团队通过企业会员节省了大量设计费用,完成多篇内容创作,单篇成本从千元降至百元内。这得益于其海量正版模板和素材库,

第五AI
推荐2025-08-07

新公众号被限流怎么办?粉丝增长影响分析及 2025 恢复指南 - AI创作资讯

新公众号被限流怎么办?粉丝增长影响分析及2025恢复指南🔍新公众号限流的核心原因解析新公众号被限流,往往是多个因素叠加的结果。根据2025年最新数据,超过70%的限流案例与内容质量直接相关。比如,有些新手喜欢用“震惊体”标题,像“惊!某公众号三天涨粉十万”,这类标题在2025年的算法里已经被明确标记

第五AI
推荐2025-08-07

AI内容重复率太高怎么办?掌握这些技巧轻松通过AIGC检测 - AI创作资讯

⚠️AI内容重复率高的3大核心原因现在用AI写东西的人越来越多,但很多人都会遇到同一个问题——重复率太高。明明是自己用工具生成的内容,一检测却显示和网上某些文章高度相似,这到底是为什么?最主要的原因是AI训练数据的重叠性。不管是ChatGPT还是国内的大模型,训练数据来源其实大同小异,都是爬取的互联

第五AI
推荐2025-08-07

135编辑器让排版更简单 | 专为公众号运营者设计的效率工具 - AI创作资讯

🌟135编辑器:公众号运营者的效率革命做公众号运营的朋友都知道,排版是个费时费力的活。一篇文章从内容到排版,没几个小时根本搞不定。不过现在好了,135编辑器的出现,彻底改变了这一现状。135编辑器是提子科技旗下的在线图文排版工具,2014年上线至今,已经成为国内新媒体运营的主流工具之一。它的功能非常

第五AI
推荐2025-08-07

用对prompt指令词,AI内容的原创度能有多高?实测效果惊人 - 前沿AIGC资讯

现在做内容的人几乎都离不开AI,但最头疼的就是原创度。平台检测一严格,那些模板化的AI文很容易被打回,甚至判定为“非原创”。但你知道吗?同样是用AI写东西,换个prompt指令词,原创度能差出天壤之别。我最近拿不同的prompt测了好几次,结果真的吓一跳——好的指令能让AI内容原创度直接从“及格线”

第五AI