【笔试篇】笔试最大的坑–输入输出
在前面的章节中,我也跟大家说过要熟悉输入输出,但是这玩意太重要了,被这玩意坑的人太多了,所以这里也再次详细说一下笔试中做算法题和我们平时做算法题有啥区别,以及给出一些准备思路。
核心模式 VS ACM模式
就是平时很多人在刷题的时候,也不会刻意去为了笔试而准备,大部分也是仅关注学算法这件事,所以在诸如 LeetCode,牛客网刷题的时候,系统为了让大家能够更加专注入学算法,我们是不需要自己去输入或者输出数据的,比如 LeetCode 这个界面
系统会给你提供一个名为 twoSum 的函数,在这个函数里,系统已经默认把需要输入的数据存放在 nums, target 这些参数里了,所以你只需要在这个函数里面处理核心逻辑就行。
你写完得出结果之后,也不需要你自己去把数据给 print 出来,而是直接 return 给系统即可。
对于这样的模式,我们称之为核心代码模式,包括你面试时,也大部分是这种模式,可以节省很多花在输入输出的时间。
但是呢,我们在笔试的时候,大部分题,是需要你自己来处理输入输出的,给不会提前给你规定一个函数啥的,比如下面这个图
上面的核心代码模式,系统给你提供了一个函数,你只需要在里面写即可,但是在笔试的时候,则没有,像上面一样,右边一片空白,所有东西都需要你自己去输入以及根据要求进行输出。
对于这种模式,我们也习惯称之为ACM模式,因为平时去打一些算法比赛的时候,就是这种模式。
如果同学们没有提前接触去熟悉这种模式的话,很容易在输入和输出上花很多时间,比如你需要仔细阅读题目的输入格式是啥样的,也需要去关注它的输出格式又是啥样的;这还不够,有一些输入描述,并没有告诉你啥时候输入结束,那你得知道如何处理这样的情况,而且如果你不大懂一些输入函数的机制,也非常容易出各种玩问题。
所以呢,对于笔试题,最需要重视的一个,那就是在笔试前,去刷个几十道题,熟悉一下输入输出,掌握常见的输入格式和输出各种,这可能让你在笔试时,少走很多网路!
如何准备好笔试的输入输出?
准备的方式也很简单,只需要做两件事。
一是把一些常见的输入输出函数搞熟悉,比如
输入类:怎么接受字符串输入,怎么接受数值类输入啊;对于那种没有规定要输入几行的,该怎么判断结束输入啊;还有一些函数会自动吃掉回车符啥的,也都要注意。
字符串处理类函数:还要熟悉一些常见的字符串熟悉函数,比如怎么把一个字符串基于某种规则分割成一个字符串数组啊;怎么把字符串一些特定字符删除啊;怎么把字符串类型转为数值类型啊,等等。
输出格式:对于输出的话,主要就是要熟悉一些特定格式的输出,比如怎么保留两位小数啊,怎么换行输出啊,等等。
那一般掌握了如上常见的函数,基本就可以处理绝大部分的笔试题了。
二是找个十几二十道题练习一下就可以了。现在也不少网站也总结了这些输入输出的题型,大家可以找一些来刷一刷,然后自己总结一下,通过刷题来熟悉上面的常见函数,积累一些常见的模版。
通过这两个准备,就基本没啥问题的了。