试用网站开发,郑州资助app下载,做网站添加mp3,进一步加强区门户网站建设管理办法1.单身狗初阶
这个题目就是数组里面有一串数字#xff0c;都是成对存在的#xff0c;只有一个数字只出现了一次#xff0c;请你找出来 #xff08;1#xff09;异或是满足交换律的#xff0c;两个相同的数字异或之后是0#xff1b;
#xff08;2#xff09;让0和每个…1.单身狗初阶
这个题目就是数组里面有一串数字都是成对存在的只有一个数字只出现了一次请你找出来 1异或是满足交换律的两个相同的数字异或之后是0
2让0和每个数字都异或一遍出现2次的经过异或就会变为0而出现了一次的就会被保留
0^mm,因为一个数字异或0就是这个数字本身
2.单身狗进阶 1这个的进阶题目多了一个单身狗需要把2个单独出现的数字全部打印出来
2我们知道56应该被打印出来但是如果我们像上面的题目一样进行异或操作最后的结果
就是5和6异或那么最后的结果既不是5也不是6显然不符合题意
3这个时候最好的方法就是进行分组而且要把56分开最后分别在这两个组里面进行异或
最后一个组剩下5一个组剩下6这样就得到了我们想要的结果
4明确了思路我们就要着手准备如何进行分组分组的依据是什么才能够把56分开
510001 20010 30011 40100 50101 60110
5^60011;
我们通过观察这几个数字的二进制序列可以发现135的二进制最低位的数字是1
2 4 6的二进制最低位的数字是0这个就可以作为我们的分组依据
6程序应该如何设计呢主函数这样设计 findnum是我们的自定义函数因为形参的改变不会影响实参形参是实参的一份临时拷贝所以我们传递地址这样形参的改变就可以同步到实参了
7我们的自定义函数这样设计 我们让数组里面的数字和1进行按位与根据他们的二进制序列135进行之后的结果是1246进行之后的结果是0在它们各自的组内进行异或最后得到的5给了*pm1,6给了*pm2
(8)返回主函数之后就得到了2条单身狗就是56打印了出来。