• 算法编程题的心得体会


    • 如果是在线笔试,一定要注意问题的规模,

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

    • 如果是浮点类型,优先选择使用 double 而不是 float;

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

    1. 好的编程习惯

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

      比如多时钟之间的时钟同步问题,
      每一次开关的操做对所有时钟的影响,可以单独作为一个函数,
      是否所有的时钟都已被校准同步;

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

    2. 算法实现中

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

    3. case 怎么用

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

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

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

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

    比如旅行商问题,当然要考虑,每个城市结点的访问情况,bool visited[n];

  • 相关阅读:
    jQuery实现图片前进后退
    jQuery写日历
    python列表模拟栈
    python 列表去重
    Linux的文件系统
    新建vss数据库
    关于业务用例和系统用例
    从零开始使用Linux命令
    svn的安装与配置
    数塔 动态规划
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423914.html
Copyright © 2020-2023  润新知