0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

算法题类型以及准备策略

算法与数据结构 来源:Coder梁 作者:梁唐 2021-09-02 10:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天就和大家聊聊大公司的面试环节经常涉及的算法题类型以及准备策略。

问题难度首先大家比较关心的就是面试时候出现的算法题的难度,从我的个人经验来看,除了有一次和同样有acm获奖经历的面试官切磋了一次之外,基本上难度都没有超过LeetCode的困难难度。并且这还是因为我有acm经历加成的情况下,大部分问题都只有LeetCode Medium的难度。

当然LeetCode的中等难度这个范围也是比较宽的,既有非常简单无聊的水题,也有比较棘手,值得深入思考的高价值问题。所以只是知道这一点一点用也没有,想要知道对自己来说究竟有多难,还是需要自己亲身体会一下。

但可以非常肯定地说,LeetCode中Medium难度下的问题所用到的算法,基本上都在大学算法课程的内容里。几乎没有超纲的内容,也不涉及比较复杂和困难的数据结构,都是非常非常基础的,甚至都远远达不到高中信息竞赛的水平。我一点没和大家夸张,下面这张图是我网盘里当年高中竞赛的课件,大家可以感受一下难度。

但是算法这个东西,大家千万不要被吓到,主要是心理上唬人,实际的难度并没有那么大。真正下定决心去练习,从入门到精通也不过是几个月的事情。我当年好几个队友都是大学才开始编程,短短半年时间已经在赛场上独当一面了。

常见的题型面试或者白板编程,由于形式的限制,题目的选择范围其实并不大。并不难理解,毕竟面试的时间有限,也不能全拿来做题,而太困难太复杂的问题候选人一点思路也没有,大部分人都做不上来,也完全起不到考察和筛选的意义。

所以拿来当做面试和白板编程的问题,不会很复杂,至少会保证绝大多数的候选人都听说过。就好像打游戏一样,哪怕是玩家津津乐道的魂游戏,总要有过关的可能。如果上来就考察一个问题,结果你连正解用到的算法都没听说过,一开始就没有做出来的可能,这种问题问了就只能浪费时间。

根据我的经验,面试当中常问的问题基本上就这几种:二分、递归、分治、排序、动态规划。

这几种算法只要是科班出身,基本上都或多或少听说过,理论上来说都应该能做出来。并且这些算法除了比较基础之外,它们的代码量都不大,一般核心代码都不会超过30行,确保编码的时间不会太长。第二是比较考验思维,通过你对这几个算法的理解深度,就足以看出来你的思维能力和算法能力了。

解题套路划好了重点,再分享几个解题的套路。

缩小问题规模有可能问题里问的是一个规模很大的问题,比如汉诺塔问题,要移动64个圆盘,这太复杂了,我们根本无法思考。不妨把问题的规模缩小,比如缩小到3个圆盘,然后我们就可以列举一下情况,找找规律和套路了。

即使是在acm赛场当中,这个方法也非常管用。

确定复杂度在acm赛场上题目当中都会标明数据的大小范围,除了起到限制作用之外也是一个很大的提示。我们可以根据数据的规模反推出正解的复杂度范围,从而排除掉一些不可能的算法。

比如说要在个数当中寻找某个数,由于计算机每秒的运行次数在这个量级,这么大的规模遍历一遍都有些扛不住,那么显然正解的复杂度一定在及以下。这么一来,我们就可以根据算法的复杂度排除掉一大批达不到要求的算法,排除错误的选项。

在面试的时候面试官往往不会明确给出数据的规模,我们可以自己结合实际情况分析,当然直接提问也是一个不错的选择。

优化思路面试不是比赛,并不是一定要给出正解。有的时候,我们一时陷入误区没想到解法也是常有的。重要的并不是我们是否想出了解法,而是我们能否展现我们思维的能力,打动面试官。

所以有的时候一下子没有想到最优解也没有关系,我们可以先易后难,先把一些简单可行的解法说出来,然后再进行优化。

比如LeetCode第4题,寻找两个有序数组的中位数。我们当然很难一下子想出的正解,但是我们可以先从最简单的方法说起。比如重新排序直接寻找,这样操作的复杂度是。说出这个方法之后,我们接着从不使用排序解决问题的角度继续思考,如此一步步逐渐深入,即使最终没能找到正解,也体现出了我们的思考是有章法的,并且思考和分析问题的能力是有的。

建议最后给大家分享几点我个人的小建议,帮助大家少走点弯路。

贵精不贵多如果是为了准备面试,就像我前面列举的一样,其实并不会涉及很多内容。相比去研究很多高大上面试的时候用不到的高大上算法,倒不如好好把这几个算法啃扎实。

就拿排序来说,想要全部搞明白就很不简单。我随便写几个问题,大家不妨对照一下看看能不能回答上来。

冒泡排序和选择排序有什么区别?

为什么说快速排序和归并排序都基于分治算法,但它们的最差复杂度不同?

排序的稳定性是什么?哪些算法是稳定的,哪些不是?

关于快速排序算法的最差复杂度,有哪些优化?

如果都能不仅仅满足原理,而是可以深入到细节的方方面面去钻研,那么即使只是准备了几个算法,应付一般的面试都不在话下。

成体系化训练算法的学习过程是比较痛苦的,尤其是如果我们漫无目的地去训练和学习,进展非常缓慢,非常劝退。很多同学都有刷题刷了一堆,但是水平好像没什么提升的情况。

我个人感觉比较有效的方法是成体系化的训练,不要按照题目顺序刷题,而是以算法划分专题,按照专题刷题。一个算法一个算法的硬啃,一个算法吃透再吃下一个。这样训练下来印象会非常深刻,对于算法的理解也会深刻得多,也不容易忘记。要比题目刷了一堆, 算法也用了一堆, 看起用得多,但也忘得多要好得多。

篇幅有限,今天就和大家聊到这里,感谢阅读和支持。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4760

    浏览量

    97144
  • 编程
    +关注

    关注

    90

    文章

    3707

    浏览量

    96765

原文标题:LeetCode ,YYDS!

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    BLDC与PMSM电机控制算法的联系与区别

    的不同表现,实质上是市场应用(低成本基础应用 vs. 高性能精密控制)在选择不同控制策略后所呈现的结果。在实际应用中,应根据具体的性能需求、成本预算和技术能力来选择最合适的“电机+控制算法”组合。
    发表于 10-27 09:23

    数据滤波算法的具体实现步骤是怎样的?

      数据滤波算法在电能质量在线监测装置中的具体实现,需围绕 “ 数据采集→预处理→算法执行→参数适配→效果验证→结果输出 ” 的全流程展开,核心是结合装置硬件特性(采样率、ADC 精度)和干扰类型
    的头像 发表于 10-10 16:45 429次阅读

    如何进行动态校准与补偿策略的实施?

    工具类型(硬件 / 软件)、环境特征(强电磁 / 高温高湿等)分步骤落地,形成 “环境感知 - 模型计算 - 实时修正 - 验证优化” 的闭环流程,具体实施方法如下: 一、实施前准备:明确核心影响因素与校准目标 在启动动态校准与补偿前,
    的头像 发表于 09-23 17:56 599次阅读

    【赛知多少】 紫光同创赛答疑专场|2025年全国大学生嵌入式芯片与系统设计竞赛FPGA赛道

    紫光同创赛道答疑专场来啦!2025年全国大学生嵌入式芯片与系统设计竞赛报名已拉开帷幕,FPGA赛道的挑战与创新并存。近期,我们收到许多关于赛的咨询,小眼睛科技团队第一时间整理了大家的疑问,并带来
    的头像 发表于 08-06 11:02 3245次阅读
    【赛<b class='flag-5'>题</b>知多少】 紫光同创赛<b class='flag-5'>题</b>答疑专场|2025年全国大学生嵌入式芯片与系统设计竞赛FPGA赛道

    DFT算法与FFT算法的优劣分析

    算法之间有什么不同,采用相关算法的依据。下面就来介绍一下两种算法的不同以及适用的一些场合。 DFT算法,是连续傅里叶变换在时域和频域上都离散
    的头像 发表于 08-04 09:30 891次阅读

    API让电商“活”起来:动态定价策略的革新力量

    格局。而应用程序编程接口(API)正是这一变革的核心引擎,它将数据、算法和业务系统无缝连接,使电商平台真正“活”起来。本文将逐步解析动态定价策略的原理、API的关键作用、技术实现,以及其实际应用,帮助您理解这一创
    的头像 发表于 07-22 14:46 376次阅读

    无轴承永磁电机悬浮波动抑制策略

    。将等效扰动电流补偿到县浮控制算法中以抑制悬浮波动。与仅采用PID控制算法相比较,仿真结果表明所提控制策略能够抑制悬浮波动,实现电机稳定悬浮。 纯分享帖,点击下方附件免费获取完整资料~~~ 内容有
    发表于 07-14 17:51

    双三相感应电机SVPWM的新型过调制策略

    摘要:过调制策略能够提高逆变器输出电压范围和品质,从而提高电机输出转速范围和转矩特性。针对双三相感应电机空间矢量脉宽调制(SVPWM)算法过调制区域有限,分区实现复杂,内存占用率大等问题,提出一种
    发表于 06-19 11:10

    基于RV1126开发板的AI算法开发流程

    AI算法开发流程由需求分析到准备数据,然后到选取模型,训练模型,接着模型转换后进行模型部署
    的头像 发表于 04-18 10:47 844次阅读
    基于RV1126开发板的AI<b class='flag-5'>算法</b>开发流程

    电机大范围调速的综合电压调制策略

    使用DPWM策略,并提出一种基于零矢量分配的过渡策略,使得两种调制方式可以平滑的过渡。这种方法使得电压波形质量,开关损耗以及电压线性范围得到优化。最后,搭建了基于Simulink的仿真模型,结果表明提出的方法可
    发表于 04-01 14:51

    C++学到什么程度可以找工作?

    常重要的。这可以是个人项目、开源贡献或是学校作业等,关键是要能展示你解决问题的能力和技术水平。 8. **八股文准备**:针对校招,还需要准备一些经典的面试问题,即所谓的“八股文”,比如常见的算法
    发表于 03-13 10:19

    大语言模型的解码策略与关键优化总结

    本文系统性地阐述了大型语言模型(LargeLanguageModels,LLMs)中的解码策略技术原理及其实践应用。通过深入分析各类解码算法的工作机制、性能特征和优化方法,为研究者和工程师提供了全面
    的头像 发表于 02-18 12:00 1071次阅读
    大语言模型的解码<b class='flag-5'>策略</b>与关键优化总结

    DLPC7540EVM是否支持自定义的图像处理算法以及如何进行算法的移植?

    是否支持自定义的图像处理算法以及如何进行算法的移植?
    发表于 02-17 08:25

    探索网络个性化服务新纪元:深入解析IMEIsv的差异化保障策略

    在当前网络中,如果对所有UE应用相同的RRM(Radio Resource Management)策略,无法满足不同类型UE的不同要求。为了给指定类型UE提供特定的RRM策略,3GPP
    的头像 发表于 02-14 16:54 940次阅读
    探索网络个性化服务新纪元:深入解析IMEIsv的差异化保障<b class='flag-5'>策略</b>

    设计模式-策略模式

    ,不会影响到使用算法的客户。策略模式属性行为模式。 二、实际应用 业务场景:业务需要监听多种消息,将接收到的消息更新到同一个ES中,不同的消息类型使用不同的策略处理,补充不同的数据信息
    的头像 发表于 01-08 13:47 555次阅读
    设计模式-<b class='flag-5'>策略</b>模式