10道单选
10道不定向
3道编程大题(ak剩20min)
第一题 :
给定一个数n和一个位置p
求n转化为二进制后 从右往左第p个位置上的值是否为1
题解:
简单位运算,右移p-1次后得到n2,
return n2&1;
第二题:
给个数组,数组元素值范围是3-13的整数,
代表扑克牌3-10,和JQK(11.12.13).
求 是否能用顺子的形式出完所有手牌。
题解:
递归贪心,用map存每个数字的出现次数。
如果map.size不到5直接return false,牌肯定打不了。
然后迭代器遍历,取出3-13的对应hash值放在vector数组里
对vector数组作以下递归操作
取第一个还有手牌的元素,一直往后找到第一个降序的值(或者剩余手牌为0的那个断掉的地方的值)
如果此时找到的末尾与首部大于四,把这个顺子出掉(在区间内的值全部自减1),对剩余手牌重复以上递归(如果没有形成顺子直接return,不进行递归)。
最后判断手牌是否全打完即可。
(直接提交一把过是没想到的)。
第三题:
给长宽高为l,w,h的长方体。
求用n个该长方体,能拼成大正方体的最小所需个数n(min)。
题解:
本质上求三个数的最小公倍数,
分解为两两求最小公倍数。
然后各自除共同的最小公倍数再全部作积。
#游戏# #笔试#