算法编程题的心得体会

  • 若是是在线笔试,必定要注意问题的规模,面试

    • 这牵涉到算法时间复杂度的要求
    • 也涉及相关数据结构的设计
      • 好比,一道关于郊游的题目,学生的规模最大才到 10 人;
        再考察学生之间的关系时,显然能够使用二维数组bool areFriends[10][10]
  • 若是是现场笔试,则要适时地向面试官提问,关于问题规模和环境的问题;
    提供多种算法解题思路,效率优先 ⇒ 贪心,方案优先 ⇒ 动态规划;算法

  • 若是是浮点类型,优先选择使用 double 而不是 float;编程

  • 一些相对高级的用法:好比 C++14 新特性,好比 Lambda 表达式,减小函数的定义(函数式编程),数组

1. 好的编程习惯

  • 将一些逻辑清晰,功能完整、且会重复使用的代码,从主函数中抽离出来,封装成独立的函数;数据结构

    好比多时钟之间的时钟同步问题,
    每一次开关的操作对全部时钟的影响,能够单独做为一个函数,
    是否全部的时钟都已被校准同步;函数式编程

  • 变量名要有清晰的物理意义;函数

2. 算法实现中

  • 一次遍历下来,获取的有用信息可能有多个,不见得必定是区间的最小值,也能够同时维护区间的和等信息。

3. case 怎么用

  • 可根据 case 的输入状况,设计存储 case 的数据类型,
    • 若是一段数字,显然是数组,或者 vector;
    • 若是是一串字符,显然是 string,或者字符数组;

4. 围绕变量、数组以及其余数据结构展开

没有数据结构也就没有算法;设计

在进行进一步的算法流程以前,第一步设置合理的数据结构,数据结构能够复杂的优先队列,二叉树,图的邻接表,也能够是简单的一维、二维数组,结构体。code

好比旅行商问题,固然要考虑,每一个城市结点的访问状况,bool visited[n];队列

相关文章
相关标签/搜索