首页 > 拼多多8.2笔试第二题
头像
Nathan_k
编辑于 2020-08-02 21:44
+ 关注

拼多多8.2笔试第二题

第二题是给n个长度为6的list,每个代表一个骰子,分为【前,后,左,右,上,下】(大致是这样,重点是二二分组)。然后判断骰子是否可以经过翻转变为同一个骰子。
题目的重点就是两个list如何判断是同一个骰子:
1.首先我们将list分组:【前后,左右,上下】,如果两个list的存在一组元素不同(不考虑组的顺序以及组内顺序),则必不可能是同一个骰子;
2.接下来我们记录每一组的组内顺序不同的组数位s,即如果list1是【前后,左右,上下】,list2是左右,后前,上下】,则s=1,这一步不考虑组之间的顺序;
3.我们记录组之间的顺序不同的组为L,如(2)中的例子,L=2,此时可以看做一次旋转,如果L=3,则是两次旋转,不可能存在L=1的情况;
4.我们依照L以及s来判断是否是同一个骰子,如果L=0,s%2==0,则这一组list肯定是同一个骰子,此时对应一个list按照一个方向旋转两次可以得到另外一个list。然后在L!=0时,(L+s-1)%2==0时,两个list为同一种骰子,因为每次旋转后,相对于上一个状态会有两个组的对应位置调换,对应L-1,会有一个组的组内顺序调换,对应s。所以同一个骰子无论怎么旋转,对应L-1+s永远是偶数。

知道如何判断后剩下就没什么了,把每个组出现的第一个位置下标保存下来,用list或字典都行,下一个骰子来时只需要依次与字典内保存的下标对应的骰子进行判断就行。
代码就不贴了。许愿offer!!!

全部评论

(3) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐