拓冰建站拓冰建站
首页 / 资讯中心 / 正文

体系--01---异或运算

提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录异或运算前置知识初级--01---二进制、位运算[初级--05--- 取模运算转化为位运算、位运算进行加减乘除](https://blog.csdn.net/weixin_48052161/article/details/121444170)num 6 相当于 num/64认识异或运算异或运算性质题目1注意 保证上诉参数i和 j 的地址值不一样题目2题目3eor (-eor) 或者 eor (~eor1)题目4题目5异或运算--01---arr中只有一种数出现了K次其他数都出现了M次异或运算前置知识初级–01—二进制、位运算初级–05— 取模运算转化为位运算、位运算进行加减乘除num 6 相当于 num/64认识异或运算异或运算性质题目1publicstaticvoidswap(int[]arr,inti,intj){// arr[0] arr[0] ^ arr[0];arr[i]arr[i]^arr[j];arr[j]arr[i]^arr[j];arr[i]arr[i]^arr[j];}注意 保证上诉参数i和 j 的地址值不一样题目2// arr中只有一种数出现奇数次publicstaticvoidprintOddTimesNum1(int[]arr){inteor0;for(inti0;iarr.length;i){eor^arr[i];}System.out.println(eor);}题目3eor (-eor) 或者 eor (~eor1)题目4假设奇数次的数 是 a,b数组循环异或得到结果 eora^b提取 eor 最右测的1出来 作为rightOne(a和b ,其中有一个此位置 必然是1 ,另一个此位置必是0,不然亦或此位置不会是1)数组循环异或此位置是1的数得到a 或者b(那么数组中,此位置是1的数,一定分2中,一种是数组出现了偶数次的,一种是a,或者是b)通过上述 eora^b 找出,找出另一个奇数的数a,b的另一个数// arr中有两种数出现奇数次publicstaticvoidprintOddTimesNum2(int[]arr){//步骤1inteor0;for(inti0;iarr.length;i){eor^arr[i];}// a 和 b是两种数// eor ! 0// eor最右侧的1提取出来// eor : 00110010110111000// rightOne :00000000000001000// 步骤2intrightOneeor(-eor);// 提取出最右的1// 步骤3intonlyOne0;// eorfor(inti0;iarr.length;i){// arr[1] 111100011110000// rightOne 000000000010000if((arr[i]rightOne)!0){onlyOne^arr[i];}}// 步骤4System.out.println(onlyOne (eor^onlyOne));}题目5异或运算–01—arr中只有一种数出现了K次其他数都出现了M次
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门