友塔笔试20/4/14
第一题,将矩阵顺时针旋转90度。
应该是个经典题型吧,考的时候盘了会儿逻辑,就是像剥洋葱一样一层一层转,(i,j)转到(j,n-1-i)等,时间复杂度n。
最后卡在测试通过率90%搞不定了,本地试了矩阵边长为1,2,3,4都没错,遂跳到下一题。
第二题,宠物有4个属性,攻防生命和评分,评分根据攻防生命得到,为攻*攻击系数+防*防御系数+生命*生命系数得到。
给2个宠物的所有属性,给第3个宠物的攻防生命,求第3个宠物评分。得不出就输出0。
回忆起可用大一学的线性代数(大概吧,要不就是高数)的矩阵那块知识解决。
大概流程就是将3宠物属性放到一个3*4矩阵里,先将2,3行的一个属性通过与第1行四则运算变成0,再试着将第3行与第2行运算将一个属性变成0,可以的话评分就求出来了,否则输出0.
如:
宠物1属性1,1,1,3,宠物2属性2,4,1,7,给宠物3的攻防生命:3,7,1,求评分:
/1 1 1 3/ /1 1 1 3/ /1 1 1 3/
/2 4 1 7/ =>/1 3 0 4/ => /1 3 0 4/
/3 7 1 / /2 6 0 / /1 3 0 /
后来想到以前算的过程中经常会用到分数,会出问题,于是将算法改良成:
/6 6 6 18/
=>/6 12 3 21/
/6 14 2 /
记住四则运算的运算过程,最后逆推得到结果。
最后只跑通60%,感觉这个思路应该没问题呀,哭。
最后几分钟瞟了一眼第三题。
第三题,m*n矩阵作为迷宫,每个点的值代表权重,为0代表此点走不通,只能上下左右走。
从(0,0)走到(m,n),权重值最小为多少。
没做到这道题,我临时想到的思路是,用递归,一个参数用list或Set等存路径,一个参数代表到此点后的权重值。
方向是向i和j变大的方向(起点在左上,终点在右下,也就是说向右和下的方向走),除非路不通才会绕路。
如果走到终点了,返回此时权重值,否则返回0.
在过程中的点会判断递归的两个结果(右和下两个点都可走)比大小,或者只有一个结果则直接返回。
第四题没看到。
总体难度我不知道该说难还是不难,照比快手那次笔试肯定是难一些,但友塔的“难”又不是我们平时笔试的那种“难”,很难形容。
逻辑上不难,也就是说不太考验逻辑,不需要你去思考一些巧妙算法,看完题你能很快想到解决的思路。
但会考一些远古的知识点,回忆起来很费劲,而且本人两道题都没全测试通过。
#友塔游戏2020春招正在进行中##友塔游戏##笔试题目#