Optiver4.5笔试
三小时的笔试做下来真的是酸爽,第一题基本AC,第二题做的磕磕巴巴。
- 第一题模拟。
限制某段时间内可以交易的金额数量,输入某个时间点的交易请求,返回允许交易的数量。
使用模拟队列做的,设置一个与时间间隔相同的队列,每次请求交易时,将前面过期存量pop掉,然后push。主要在每次Push前一定要保证队列中元素是满的,这样才能与时间轴对上。
- 第二题图的处理。
需要读入数据,判断数据格式是否有效,然后使用Dijkstra算法求最短路径(或许用DFS或者BFS也可以?)。倒在了stringstream的处理、Dijkstra算法以及边界条件判断上。
美团4.9笔试
72% + 100 % + 27% + 9% + 16% = 224%
第一题日期操作,很简单,但是不能全部AC;
第二题找逆序对,开始用的傻瓜算法,后来用dp,一次过;
第三题修BUG,每次可以修的是前面的1/k,求最小值。开始用暴力方法做,后来改等比数列求和,还是超时。。。学个log的求法,换底公式。
第四题简单图,把问题想复杂了,可能是由于前一天做了力扣上的<机器人的运动范围>? 上来DFS遍历4*4矩阵(完全没意义啊,应该要遍历图的每个邻接点,然后再下一层,错误)后来时间不够直接输出样例了;交卷后12min差不多做出来了。。。直接用一个简单的一维数组+DFS就好。 写代码前还是先画画图理解一下。
第五题匹配子字符串,没时间做了,直接输出样例。
字节跳动4.12笔试
100% + 20 % + 20% + 72% = 212%
第二题,劈木棍,使劈完的木棍长度序列不减小,暴力模拟,栈溢出。
第三题,优惠券的使用。
第四题,视线中可以看到的房子数量,找左最大和右最大。