0812京东算法岗笔试
投票
选择40分,三道编程题60分。
感觉这次做的比较抽象,第一道题没做出来,后两道题做出来。。。
第一题是给定一个字符串有如下两个操作
(a)把第一个挪到最后一个
(b)任意修改一个字符
问最少多少次操作可以等得到一个回文串
Q: 想着模拟先操作a后操作b,结果最多只能70%,可能还是要dp但是当时着急去写后面的就跳过了。有没有大佬共享下思路。
第二道题是给一个数组,每次可选两次操作
(a)选择最后两个数x,y。删除x,y 并且把x+y的个位数塞到最后
(a)选择最后两个数x,y。删除x,y 并且把x*y的个位数塞到最后
总过做n-1次,问最所有操作顺序中最后一个是0 - 9的次数,分别输出每个数字的次数
Q:这个比较简单,直接从最后往前模拟即可,但是有两个比较坑的边界case。n=1时有两种可能,一个是数组里面是0-9,这时候对应的结果里面为1,另外是数组的唯一一个数组大于9,这时候输出全零。
第三题是给定一个 n*m 的棋盘 有的是空位有的是棋子
要求选择4个棋子组成正方形。求所有的正方形数量(只要有一个棋子不一样就是新的)。
Q: 注意有斜着的正方形,因此要不重复遍历两个点作为固定的一个边,然后根据向量计算另外两个点的坐标看看是不是棋子,最后统计所有结果。
感觉这次做的比较抽象,第一道题没做出来,后两道题做出来。。。
第一题是给定一个字符串有如下两个操作
(a)把第一个挪到最后一个
(b)任意修改一个字符
问最少多少次操作可以等得到一个回文串
Q: 想着模拟先操作a后操作b,结果最多只能70%,可能还是要dp但是当时着急去写后面的就跳过了。有没有大佬共享下思路。
第二道题是给一个数组,每次可选两次操作
(a)选择最后两个数x,y。删除x,y 并且把x+y的个位数塞到最后
(a)选择最后两个数x,y。删除x,y 并且把x*y的个位数塞到最后
总过做n-1次,问最所有操作顺序中最后一个是0 - 9的次数,分别输出每个数字的次数
Q:这个比较简单,直接从最后往前模拟即可,但是有两个比较坑的边界case。n=1时有两种可能,一个是数组里面是0-9,这时候对应的结果里面为1,另外是数组的唯一一个数组大于9,这时候输出全零。
第三题是给定一个 n*m 的棋盘 有的是空位有的是棋子
要求选择4个棋子组成正方形。求所有的正方形数量(只要有一个棋子不一样就是新的)。
Q: 注意有斜着的正方形,因此要不重复遍历两个点作为固定的一个边,然后根据向量计算另外两个点的坐标看看是不是棋子,最后统计所有结果。
全部评论
我比较笨,为什么第二题n等于1的时候0-9就是1,9以上就是0呢,我直接取余了
为什么笔试完一直是待笔试状态呀
相关推荐
10-12 11:32
广东外语外贸大学 网页产品经理 点赞 评论 收藏
分享