MetaAPP笔试复盘(我真的很菜,还有1/3多没做完)

笔试一共三道编程题(1.5小时内完成),每一道编程题有三小问,每一小问的结果作为下一小问的输入参数

题目难度是简单,没有什么弯弯绕绕的算法题,都是常规性的操作。

第一题:(1)输入一个数,计算这个数字各位的和,如果和为个位数则返回,否则在再对和计算各位和,直到最终各位和为个位数,返回这个个位数,写代码的时候发现自己有点忘了“/”是不是向下取整了;

(2)对输入的整数寻找约数,并把约数从大到小排列,大于8个约数只返回最大的8个,返回一个数组。我用了插入排序,差点就想着用快排了,好猪,,不过想到快排的时候出了一手冷汗,因为发现忘了快排怎么写;

(3)输入一个数组,如果数组长度大于或等于33,则返回第33个元素;如果数组长度大于或等于33/2,则返回第33/2个元素;如果数组长度大于或等于33/4,则返回第33/4个元素;以此类推……,就很简单的选择分支结构,if else if else就过去了,不知道有没有更简单的方法,还是说可以用Switch(我真不熟这个)。我觉得这道题戳中我的地方在于,怎么判断数组的长度,因为我第二问是直接定义10000长度的数组,所以在第三问用的是if((nums+33)),如果不是NULL,那就说明数组长度有33,不知道这样对不对。看来还是得学点c++,我记得c++好像有函数是可以直接调用获取数组长度的,可是想我这样定义,获取到的长度是不是10000啊。。。所以这题对我来说主要的难点是,,怎么获取数组长度。

第二题:(1)跟第一题(1)一样

(2)输入一个整数,求这个整数的八进制,用数组表示并返回

(3)这个有点难,输入一个数组,把数组的元素编号视为小朋友们,编号从1开始,每次叫到5的离开,再从下一位开始叫1;这样子反复,请问最后一位离开的元素是?这个难,因为,,好像也不难。现在的想法是用循环链表来做,在给每个节点多加一个属性叫“在/不在”来标识元素是否已离开,一直取未离开的节点数到第五个踢开,再用一个int统计一下踢走的数量,踢走n-1个元素的时候就返回,,但感觉是很笨很直接的方法。

第三题,没来得及看,,,害

#笔试##MetaAPP#
全部评论
每天进步就好
点赞
送花
回复
分享
发布于 03-30 17:00 广东

相关推荐

投递MetaApp等公司10个岗位
点赞 评论 收藏
转发
点赞 5 评论
分享
牛客网
牛客企业服务