2022字节跳动移动客户端实习笔试题目(求大佬答案)
♥♥♥♥♥♥♥♥♥♥♥
1,小红走迷宫 起始位置在左上角
输入:
第一行 :n(例 n=4)
第二行 -第n+1行 :
0000
1110
0000
1111
(1表示墙)
最后一行:"WASDAWAWDASD"就是上下左右那个操作键
输出:
最后的位置(撞墙不动)
解:硬模拟,按照操作一个一个switch,不能用本地ide
2,输出k对相邻数和为技术的数组
描述:就是1 2 3。。。。。n然后讲这些数按照一定顺序输出,使得有k对相邻的数之和为奇数;
输入:
数组长度:n
k对: k
输出:
长度为n的数组
解:按顺序输出有n-1对,交换中间的数,如果中间的两个数的两边不同则减少两对奇数和,如果两边相同就不减少,对于数组的边界就减一(针对101情况)
3,小红染色
在长度为n的数组中有的被染色了,有的没被染色,现在求小红用最少的料染长度为k的一面墙
输入:
长度:n
最小长度:k
各个部分的权值:a[0] a[1] ..... a[n-1](a[0]就是0这里要用a[0]个染料)
各个部分的状态:rwrwrwrwwwrrrr(r就是染过了,w就是没染过)
输出:
使用最少染料的数量
解:窗口移动(可惜运算超时了)当时没想到怎么优化
4,下“象”棋
在一个n*n的空间里面,有一个象和若干个兵,兵会卡象眼,求象从一点到另一点的最短操作数量
输入:
空间大小:n
象的位置:row col
兵的个数:k
兵的位置:while(k--!=0){
row[k] col[k]
}
输出:
最短步骤数
思路:有点像之前在力扣做的包围圈的问题(问在二维数组里,有障碍,问一点能不能到达另外一点),但是好像没啥关系,要么就dfs给他硬推,最后剩十分钟没做出来,return了一个-1
总结:题目难度中等到困难,一句话:题目出的好,人是真的菜!还是要多多刷力扣🤐