华为od笔试题

兄弟们 这个咋写?感觉有思路但就是做不出来。华为OD笔试题
两相同长度的二进制数进行或运算,第一个二进制数里任意两位可以互换位置。
求第一个二进制数由于数据间互换位置,导致与第二个二进制数求或运算得到的结果跟第一个二进制数未进行位置互换时与第二个二进制数求或运算产生的不一样的结果个数

第一个二进制数010
第二个二进制数110

1未发生位置互换时与2的或运算结果是110,1发生位置互换之后可变为001与2做或运算结果是111。所以跟原结果不一样的结果个数为1
如:
第一个二进制数011011
第二个二进制数110110
结果为4


#华为笔试##华为##笔经#
全部评论
给个思路试一下哈~ 用数2的0位去统计数1中一的个数和零的个数。比如分别是n,m。即n个一任意换一个零过来就好。而m个零也是任意换一个一过来就好。在统计下数一本身有几个一和零,比如分别x,y。那么结论就是n*y+m*x
6
送花
回复
分享
发布于 2022-02-28 15:45
个人理解: 或运算是同为0则为0,否则为1. 因此第二个二进制数中为1的位置,不论第一个数中对应位置数为0还是1,或的结果都是1, 所以解题思路就放在第二个数中0的位置了。 找出第二个数中0的位置和第一个数对应位置的值,如果第一个数对应位置是1,则需要找第一个数中0个数;如果第一个数对应位置是0,则需要找第一个数中1的个数,最后求和即可拿到答案。   上题中第二个数有2个0,且第一个数对应位置都是1,所以在一个数中找0的个数,即该位置为0的可能数,均为2,所以是2 + 2
4
送花
回复
分享
发布于 2022-03-01 23:39
滴滴
校招火热招聘中
官网直投
华为计算产品线OD软件开发岗位! Base地杭州!对接组内,团队氛围好! 感兴趣可以私信我!从简历到机试到面试一条龙服务!
2
送花
回复
分享
发布于 2022-02-28 11:08
祝楼主求职顺利!借楼宣传华为解决方案测试OD招聘,杭州深圳成都西安多地有岗~欢迎戳我咨询~
1
送花
回复
分享
发布于 2022-02-28 11:46
祝楼主顺利通过面试~ 借楼发个广告,欢迎来聊 https://www.nowcoder.com/discuss/842835?source_id=profile_create_nctrack&;;channel=-1
1
送花
回复
分享
发布于 2022-02-28 12:24
理想汽车春季招聘,车企顶级待遇,内部专属内推链接(内推码已自动填好),可私信加vx好友全程跟进: https://app.mokahr.com/m/campus_apply/chehejia/40949?recommendCode=DSSCgruY#/jobs
1
送花
回复
分享
发布于 2022-02-28 22:52
感觉你第二个结果4有些不太对吧? 觉得应该用2**m-1(m为二串里面0的位数,同时需要参考1串里面0,1位数)
1
送花
回复
分享
发布于 2022-02-28 23:00
华为社招,base东莞,软件开发岗位,感兴趣私信我,流程快,顺利一周可发offer
1
送花
回复
分享
发布于 2022-03-04 08:02
二进制的长度范围0-1000000
点赞
送花
回复
分享
发布于 2022-02-28 00:21
分别计数一串二串0的个数,看二串中0的位置最多可以放多少0和1,分情况计算一下排列组合就行。(时间比较急简单说一下我的想法)
点赞
送花
回复
分享
发布于 2022-02-28 09:34
第二个结果是4?确定不是2?
点赞
送花
回复
分享
发布于 2022-02-28 23:25
阿里巴巴/蚂蚁金服2023届校招,招聘java实习生,我们部门hc充裕,可以加微信聊聊呀yesi123ok。
点赞
送花
回复
分享
发布于 2022-03-05 22:30
第一个二进制数011011 第二个二进制数110110 或计算后,101101 变化的各数有几个? 是这样的吧
点赞
送花
回复
分享
发布于 2022-03-07 07:28
我觉得这道题的关键是第二个串中0的个数。因为是或运算,所以差异应该就是2乘以第二个串中0的个数
点赞
送花
回复
分享
发布于 2022-03-10 22:04
华为od岗位,深圳南京苏州杭州,前端后端测试都招,欢迎联系!
点赞
送花
回复
分享
发布于 2022-03-11 00:21
应该这个吧:两个数组中1的个数分别为m,n,第二个数组中0的个数为q: 1)m>=n,m<=q:C(m-n,q)到C(m,q)累加-1; 2)m>=n,m>q:C(m-n,q)到C(q,q)累加-1; 3)m<n>q:C(0,q)到C(q,q)累加-1;</n>
点赞
送花
回复
分享
发布于 2022-03-12 13:44
我是把第一个数(n1)进行交换后的所有可以都保存到set中,然后逐个(如果等于n1就跳过)与第二个数(n2)进行或运算,得出的结果与n1n2的或运算进行比较,不同就count++,返回count。试了几组数据跟评论区答案不一样,但我不知道我哪步有问题😂
点赞
送花
回复
分享
发布于 2022-03-12 15:50
华为消费者BG 鸿蒙操作系统软件测试开发有大量HC,坐标武汉,有意者私聊我
点赞
送花
回复
分享
发布于 2022-03-12 20:42
交换次数有限制吗
点赞
送花
回复
分享
发布于 2022-03-16 17:44
遍历第二个二进制,如果是0,那就看第一个二进制相同位置的数,if是1的话,则+= 第一个二进制中0的个数,if是0的话,则+= 第一个二进制中1的个数,最后输出sum
点赞
送花
回复
分享
发布于 2022-03-24 23:47

相关推荐

12 38 评论
分享
牛客网
牛客企业服务