网易笔试第二题 OR | 与

第二题题目写的是按位与,文字中给的时OR |,说的又是与
测试用例等于白给,查询为YES的都是插入的原值
我按照按位与来搞的,最后还是10%

按位与:
```
public static boolean contain(Set<Integer> set, int target) {
if (set.contains(target))
return true;

Set<Integer> select = new HashSet<>(set);
for (int i = 0; i < 32; i++) {
//target对应位为1 目标值全为1才行
if (bitofIndex(target,i) != 0) {
Set<Integer> tmp = new HashSet<>();
for (int num : select) {
if (bitofIndex(num, i) != 0) {
tmp.add(num);
}
}
select = tmp;
if (select.isEmpty())
break;
}
}

int end = 0xffffffff;
for (int num : select){
end = end & num;
}
return end == target;
}

static int bitofIndex(int a, int index) {
return a & (1 <<  index);
}
```

按位或思路是类似的,如果对应位为0,集合中所有位都为0才行,最后候选集合都按位或,target为1的位上只要有存在1的,得到的结果就和target相同

现在问题是当时应该也不是眼瞎了呀,题目很矛盾,我按照与来做了,结果应该是按位或来判断的,只过了直接判断集合的10%,伤心
#网易##笔试题目#
全部评论
ac #include <stdio.h> #include <unistd.h> #include <iostream> #include <vector> using namespace std; int main() { int q; cin >> q; vector<vector<int>> nums(30); while (q--) { int a, b; cin >> a >> b; if (a == 1) { for (int i = 25; i >= 0; i--) { if ((1 << i) & b) { nums[i].push_back(b); } } } else { bool flag = true; for (int i = 25; i >= 0; i--) { if (((1 << i) & b) == 0) { continue; } bool found = true; for (auto num: nums[i]) { if ((num | b) == b) { found = false; break; } } if (found) { flag = false; break; } } if (flag) { cout << "YES" << endl; } else { cout << "NO" << endl; } } } }
点赞 回复 分享
发布于 2019-08-03 18:50
第二题和第三题,真的没搞清楚题目要表达的意思
点赞 回复 分享
发布于 2019-08-03 18:01
题目的意思是,每行第一个数为1 的时候,就把第二个数添加到集合,每行第一个数为2的时候,就查询第二个数。。。我看了好久才看懂,时间都浪费了
点赞 回复 分享
发布于 2019-08-03 18:53
题意真的看不懂....
点赞 回复 分享
发布于 2019-08-03 18:34
按位或,题目都给出符号了
点赞 回复 分享
发布于 2019-08-03 17:57
没看懂题,出的什么鬼
点赞 回复 分享
发布于 2019-08-03 17:36
10%
点赞 回复 分享
发布于 2019-08-03 17:33
这题我都没看懂😌😌😌
点赞 回复 分享
发布于 2019-08-03 17:30

相关推荐

不愿透露姓名的神秘牛友
06-18 17:37
点赞 评论 收藏
分享
运营你豪哥:简历改改吧-非本、求职意向技术岗、无实习经历、内容空洞 如果简历不爆改的话,应该是会持续崩溃了 1.把你教育经历放最下面去 2.蓝底照片很奇怪哈,感觉还在高中时代,建议白底重新拍一下 3.校园经历没啥必要,收集和反馈同学们对产品的意见,解决学生和老师之间的沟通,企业招聘不看这些哈 好好思考一下简历的设计和你要表达的重点,再去投简历
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

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