前言

前几天参加了腾讯的实习生基地面试,使用腾讯视频的”面呗”软件进行面试,手撕代码的过程中用的是ACM模式,之前对此并不熟悉,所以写一篇文章来总结记录一下.

本文首先介绍了什么是核心代码模式,然后介绍了什么是ACM模式,最后深入分析并总结了在JavaScript Node环境中如何用ACM模式来答题,以及答题的注意事项.

核心代码模式

所谓核心代码,顾名思义,就是只需要完成代码的核心部分.

通常的表现形式是完成一个函数的内容部分,典型代表就是LeetCode,这也是我们平时练习最多的模式,其特点如下:

  • 只需要完成代码的核心部分,函数名称和形参名称等等都已经准备好
  • 不用处理输入输出,OJ(Oline Judge,在线判题系统)会自动调用我们完成的核心函数,输入测试用例来进行测试,我们不用担心数据输入
  • 通常情况下会用结果反馈,会提示不通过的原因及不通过的用例

ACM模式

ACM(Association for Computing Machinery, 计算机协会),每年会举办著名的ACM竞赛.ACM模式的得名就是ACM竞赛的判题模式.

ACM模式核心特点在于程序需从标准输入读取数据,处理后将结果输出至标准输出,对输入输出格式要求严格.也就是说数据需要我们自己来读入,并自己将结果输出,主要特点如下:

  • 标准化输入输出: 禁止任何额外输出,否则会被判错.

  • 通常包含多个测试用例,需循环处理直到输入结束.

    • 常见输出形式

      1
      2
      3
      4
      3			// 测试用例数量
      1 2 // 用例1输入
      3 4 // 用例2输入
      5 6 // 用例3输入

一个典型的ACM模式基本代码如下:

1