zoukankan      html  css  js  c++  java
  • 算法编程题的心得体会

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

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

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

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

    1. 好的编程习惯

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

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

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

    2. 算法实现中

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

    3. case 怎么用

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

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

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

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

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

  • 相关阅读:
    Websphere 系列的https证书的配置说明
    Linux下运行windows程序
    Linux常见命令(三)
    使用Java语言开发微信公众平台(八)——自定义菜单功能
    Linux常见命令(二)
    微信小程序,前端大梦想(八)
    微信小程序,前端大梦想(七)
    使用Java语言开发微信公众平台(七)——音乐消息的回复
    微信小程序,前端大梦想(六)
    微信小程序,前端大梦想(五)
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423915.html
Copyright © 2011-2022 走看看