美团笔试

小美的简单构造没看明白

全部评论
把输入的x转为20位的2进制,然后结果数组里除了x以外,就是x二进制版本里为0的位依次取1. 举个例子,假如x为0110,那结果是{0110,0111,1110},这是个简单的例子,题目里需要考虑20位
1 回复 分享
发布于 08-23 11:34 四川
题本身不难,难的是读懂题目,我读了20分钟才知道他想让我干嘛,我是直接找x二进制位为0的地方,然后按顺序变为1就好了
点赞 回复 分享
发布于 08-23 11:46 上海
为啥in.nextlong()最后一个输入死循环啊,想法对了结果输入不让我输,人麻了
点赞 回复 分享
发布于 08-23 11:39 北京
我也没看懂,只通过百分之四
点赞 回复 分享
发布于 08-23 11:32 重庆
通过率4 第三题人心态崩了 没写完 就差最后一点
点赞 回复 分享
发布于 08-23 11:30 四川
我也是这个,感觉按照要求写完了,但是通过率0
点赞 回复 分享
发布于 08-23 11:27 湖北

相关推荐

08-23 11:00
门头沟学院 Java
点赞 评论 收藏
分享
08-23 06:00
门头沟学院 Java
点赞 评论 收藏
分享
第一题思路:如果长度长的那边 <= m,  则短的作为x;如果不满足上述条件,则长的作为x;第二题思路:题目要求这个美丽数组里面的所有数两两的&运算都得满足ai & aj = x,根据&运算的概念,两个位置都为1才能是1。所以,根据这个概念来看,如果要满足两两&运算都得为x的话,那么这个数组里面的每个数,就必须占满所有的1的位置,即出现1的位置就已经固定了,就是X所在20位里面出现1的地方。另外一个数的可选范围,就从X里面出现0的地方开始选,因为不管怎么样1 & 0 = 0,还是满足条件的。那么存在多少个0,就可选“多少个数 + 1(本身)”。public static void main(String[] args) {Scanner in = new Scanner(System.in);int t = in.nextInt();for (int i = 0; i < t; i++) {int num = in.nextInt();int n = num;// 看那几位是0List<Integer> zeros = new ArrayList<>();for(int j = 0; j < 20; j++){int sum = (n >> j) & 1;if(sum == 0){zeros.add(j);}}System.out.println(zeros.size() + 1);System.out.print(num + " ");for(int j = 0; j < zeros.size(); j++){System.out.print(num + (1 << zeros.get(j)) + " ");}System.out.println();}}第三题思路(没写了):打算按照树的思路去计算两个节点分别到Root的高度,然后根据是不是是不是在同一边,判断是加还是减。感觉这样肯定超时了,就没继续写了。
牛客60069442...:第二题我也是这个思路,结果正确率就4.76%
投递美团等公司10个岗位
点赞 评论 收藏
分享
还排名这么靠前?
赛博小蟑螂:虽然时间长,但是他工资低啊
投递浪潮等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务