概述
今天晚上7.00-8.00参加了阿里巴巴集团的算法工程师--自然语言处理的笔试题,谈几点感受,仅记录这忙碌的一天。
要求
要求录制屏幕,关闭所有通信和其他网页,手机扫码锁定手机,反正你能想到的作弊手段基本给你搞没了,足见大厂的严格。
内容
内容为两道算法题。平常也刷一些leetcode,优先队列、前缀树、动态规划什么的自我感觉可以。可是阿里出的题是非常符合实际生活的题,完全不像是leetcode上的一些什么最长子序列之类的,上来一个“打怪获取金币升级”游戏类,倒是让我突然懵逼了一会。
题目1:有一个勇士,有一个初始能力值,有一堆怪,怪也有能力值,当勇士的能力值低于怪的能力值,需要消耗金币提升,初始金币为0;打败怪后,金币+1;问勇士拥有的最多金币为多少?
思路: 先把这堆怪排序,先打小的,如果连小的都打不过,那么直接跳出0;
初始化一个怪数量的数组。开始遍历怪,如果能打过,就+1;打不过看需要多少金币,如果金币不满足,此步的金币为上一步的金币。
最后排序数组获取最大值。
题目2:有一个小朋友需要需要从一个图的节点到另一个节点。这两个节点满足等级一致。(具体记不清了...反正就是一种图的最短路径问题,加上一个要求,起点和终点必须为同一等级)
思路: 先用一个邻接数组存储图,然后用ranks存储每个节点的等级。
先去遍历ranks找到满足条件的起点和终点。之后找到这两点之后在进行遍历即可。迪杰斯特拉
感受
感受谈几点,非常紧张,也了解了自己的不足,还需加油。
致谢
在此仅感谢侯哥的指导!!