• 【算法面试】数据结构算法面试指南


    一、算法学习有何好处

    1、培养逻辑思维和解决问题的能力

    2、提升代码质量

    3、超越自我而非超越他人

    二、如何学习

    2.1、初步修炼

    1、弄清没种算法解决问题和使用的先决条件,以下是一些典型例子:

    • 二分查找:要求函数具有单调性

    【例如】排好序的数组里找某个数是否存在(如果乱序,则不可直接进行二分查找)

    • 双指针:要求问题本质上具有决策单调性

    【例如】一个数组中的连个下标L1和L2,假设L1<L2,L1对应的方案R1需要小于或等于L2对应的方案R2,这样在L不断往右移动的过程中,R也可以停止或往右移动,从而使得L和R均为从头到尾遍历一次。【切记不能忙不给面试官回答能不能用什么方法,问题没看透彻】

    • 动态规划:要求状态的设计和转移策略不会带来后效性
    • 迪杰特斯拉求最短路:要求图上无负环

    2、分析时间复杂度 & 空间复杂度

    • 首先考虑时间复杂度的数量级
    • 在数量级已经最优的情况下,尽量做到常数最小

    3、用不同思路解决同一问题

    2.2、进阶修炼

    总结回顾,发现不同算法之间的关联性、异同点

    • 思考广度优先搜索,迪杰特斯拉已经SPFA之间的关系不同 
      • 给定一个无向图,边权值均为正且相同,求从1号节点到n号节点的最短路径   【广度优先就可以解决】
      • 给定一个无向图,边权值均为正且不同,求从1
  • 相关阅读:
    Nginx 反向代理和负载均衡
    C++ 异常
    82.(cesium篇)cesium点在3d模型上运动
    电视盒子,机顶盒,SIP Web视频通话,视频会议,方案分析
    分销模式为用户解决哪些痛点?
    Yakit单兵作战神器简单使用
    AUTOSAR CAN网络Bus Load Reduction Mechanism
    JS 深浅拷贝详解
    小程序入门及案例展示
    CentOS虚拟机装完了,不能粘贴window命令行?不能上网?
  • 原文地址:https://blog.csdn.net/ckq707718837/article/details/125423878