注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
这个公司店面考的是LC溜酒气,略微变种,在Hackerrank上写的,现在要onsite,搜遍了地里没发现面经,只能去玻璃门上淘,发现昂塞不考lc,考puzzle,需要一个半小时写出来,整理了七八个puzzle题,下面这四个题真是不知道该怎么解,想请教下思路,等我面完回来写面经。
1)给一条长条纸,分成2^n的方格,从左到右按顺序填上1到2^n的数字,比如,n=3:
1 2 3 4 5 6 7 8 现在开始折纸,一共折n次,L表示依次从左边覆盖到右边,R表示从右边依次覆盖到左边,最后折成只有一个方格的竖条,这时候从上往下看,求看到的数字的顺序, 例如n = 2: 1 2 3 4 LL = 3 2 1 4 LR = 4 1 2 3 n = 3: LRL = 5 4 1 8 7 2 3 6 RLR = 4 5 8 1 2 7 6 3 …. Follow up: 二维数组 现在是一张纸,分成2 ^2n个方格,按顺序填入1~2 ^2n的数,比如,n = 3: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 L和R还是和上面同样的意思,现在多了两个操作T – 从上边缘往下折,B– 从下边缘往上折,一共折2n次,最后也是成为一个一个方块的竖条,这时候从上往下看这个竖条,求能够看到的数字的顺序。 比如 n = 1: 1 2 3 4 LT = 2 1 3 4 TR = 4 2 1 3 n = 2: 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 LTRB = 15,14,2,3,4,1,13,16,12,9,5,8,7,6,10,11TTRR = 14,2,6,10,11,7,3,15,16,4,8,12,9,5,1,13BRBL = 1,13,16,4,8,12,9,5,6,10,11,7,3,15,14,2 2)判断是否是juggling pattern (jugglingpattern的维基百科解释:), 给一串数字表示依次扔球的滞空时间,比如给[5,3, 1]: 时间点0:左手把A球扔出,滞空时间为5; 时间点1 :右手把B >10轮是根据前面的情况,求出如果打到10轮完成后最有可能出现的10种比分。 4)设计单人纸牌游戏接龙Simple Solitaire Card Game (维基百科:(game)),游戏规则是总共52张牌,首先有7摞,每一摞最上面的牌都是朝上可以看到的,第1摞1张牌朝上,0张牌朝下;第2摞1张牌朝上,1张牌朝下;第3摞1张牌朝上,2张牌朝下;第4摞1张牌朝上,3张牌朝下; 以此类推,第7摞1张牌朝上,6张牌朝下。所以这7摞牌总共是7张朝上的牌+(朝下的牌0 + 1 + 2 + 3 +4 + 5 + 6) = 28张,剩下的24张牌为一个deck。设计一个模型让24牌按照规则插入到7摞牌里面,并按照黑桃红心梅花方块整理成4摞。 我的想法是原本的7摞就设计成7个stacks,并且栈最底下的牌应该是最大的(K),除非比较小的牌本身最开始就已经在栈里面了;24张牌的deck设计成一个循环队列,用头尾相连的链表来实现, 但是栈里面必须是不同花色的牌(红色和黑色)间隔相存,这个应该怎么设计;栈里面朝下的牌在上面的牌未移动开的时候是看不到的,这个“刚开始看不到”和“翻牌”的操作应该怎么设计呢?
|