当前位置: 首页 > news >正文

成品网站源码1688danji6网站设计与开发

成品网站源码1688danji6,网站设计与开发,南宁市建设工程质量安全协会网站,商品房交易网这里写自定义目录标题 异或运算题目1题目2 本篇是关于异或(^)运算的运用。后期看算法过程中如果再碰到异或的都会收录到本篇中 异或运算 在逻辑学中,逻辑算符异或(exclusive or)是对两个运算元的一种逻辑析取类型&am…

这里写自定义目录标题

  • 异或运算
  • 题目1
  • 题目2

本篇是关于异或(^)运算的运用。后期看算法过程中如果再碰到异或的都会收录到本篇中

异或运算

在逻辑学中,逻辑算符异或(exclusive or)是对两个运算元的一种逻辑析取类型,符号为 XOR 或 EOR 或 ⊕(编程语言中常用^)。但与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另外一个的值为非真。转化为命题,就是:“两者的值不同”或“有且仅有一个为真”

true ^ true = false
false ^ false = false
true ^ false = true
同理
1 ^ 1 = 0
0 ^ 0 = 0
1 ^ 0 = 1

且满足两个特性:交换律、结合律、归零律、恒等律

交换律:A ^ B = B ^ A
结合律:(A ^ B) ^ C = A ^ (B ^ C)
归零律:A ^ A = 0
恒等律:A ^ 0 = A

有了归零率和结合律,我们就可以轻松证明:

自反:A ^ B ^ B   =    A ^ 0   =    A

题目1

题目:给定一个数组,其中只有一个数出现奇数次,其他都出现偶数次,打印奇数次的数。
解法:结合律和归零律
例子int[] array = {1, 2, 2, 3, 3, 4, 4, 5, 5} 输出 1
思想

   a ^ b ^ c ^ a ^ d ^ b ^ c ^ d ^ e ^ e ^ e ^ f ^ f 
=  a ^ a ^ b ^ b ^ c ^ c ^ d ^ d ^ e ^ e ^ e ^ f ^ f //分组
=  0 ^ 0 ^ 0 ^ 0 ^ 0 ^ 0 ^ e ^ 0 //两两归零
=  e

代码

public class FindOddOccurrenceNumberUsingXOR {public static int findOddNumber(int[] arr) {int result = 0;for (int num : arr) {result ^= num;}return result;}public static void main(String[] args) {int[] array = {1, 2, 2, 3, 3, 4, 4, 5, 5};int oddNumber = findOddNumber(array);System.out.println("奇数个的数字是:" + oddNumber);}
}

题目2

题目:给定一个数组,其中有两个数出现奇数次,其他都出现偶数次,打印奇数次的数。
解法:结合律和归零律
例子int[] array = {1, 2, 2, 3, 3, 3, 4, 4, 5, 5} 输出 1,3
思想

   a ^ b ^ c ^ b
=  a ^ 0 ^ c //两两归零
=  a ^ c
=  x

知道这两个值异或的结果,如何知道两个值呢?自反
A ^ B ^ B = A
对于X转成二进制后,我们知道肯定有一位是1,因为x = a ^ c那么这一位为1的数不是a就是c仅为其中1个,我们假设是a。那么对于整个数组所有数来说,就分了两个阵营。

该位置为1该位置为0
ac
de,n,f

最后一步判断:因为其他数字都是偶数个,所以^后都是0,只有基数个的数字c^才是1。这样就能获取到a和c的值了。

代码

public class FindTwoOddOccurrenceNumbers {public static int[] findTwoOddNumbers(int[] arr) {int xorResult = 0;for (int num : arr) {xorResult ^= num;}//xorResult最终的值是 5^1// 找到两个奇数个数字的异或结果中的某一位为 1 的位置,讲解如下:// 假如 xorResult = 5 = 101// 减1取反后:~(101-001) = 011// 再和101取&= 001;// 此种算法就是获取一个数的最右一位的1int rightmostSetBit = xorResult & (~(xorResult - 1));int firstNumber = 0;for (int num : arr) {//获取与(其中一个基数个数字)同位置都是1的数字if ((num & rightmostSetBit)== 1) {//其他数字都是偶数个,都是0,所以可以找到(其中一个基数个数字)firstNumber ^= num;}}//自反原则,xorResult ^ firstNumber = (5^1)^1 = 5;return new int[]{firstNumber, xorResult ^ firstNumber};}public static void main(String[] args) {int[] array = {4, 2, 4, 5, 2, 3, 3, 1};int[] result = findTwoOddNumbers(array);System.out.println("两个出现奇数次的数字是:" + result[0] + " 和 " + result[1]);}
}
http://www.hkea.cn/news/645938/

相关文章:

  • 网站建设步骤 教 程网站怎么做谷歌推广
  • 网站制作需要注意什么潍坊做网站哪家好
  • 专门做团购的网站有哪些色盲图
  • 百度做网站续费费用百度营业执照怎么办理
  • 深圳网站建设方维网络企业网站制作要求
  • 制作好网站黑帽seo教程
  • 云南 网站建设网站seo优化对网店的推广的作用为
  • 网站建设免费国外舆情服务公司
  • 怎么做网站banner查排名网站
  • 做网站好看的背景图片相关搜索优化软件
  • 怎么查网站是哪家制作公司做的百度收录查询
  • 企业年金交了有好处吗网络优化工程师吃香吗
  • python做网站开发百度6大核心部门
  • 自己做网站平台企业网站优化价格
  • 淘宝网网站建设的需求分析百度会员登录入口
  • 建网站的专业公司推广网站多少钱
  • 网站不去公安局备案自己怎么搭建网站
  • 外贸网站建设入门深圳网络推广哪家
  • 网站模板资源公司网站推广
  • 广东省建设教育协会官方网站首页html简单网页代码
  • 个人网站意义阿里指数官网最新版本
  • 网站开发方式有哪四种搜索引擎优化课程总结
  • 申请做网站、论坛版主app推广接单
  • 青海网站建设广州seo优化推广
  • 物流公司网站制作模板上海网站关键词排名
  • 广西建设人才网搜索引擎优化的目标
  • 比汉斯设计网站素材图片搜索识图入口
  • php网站架设教程英雄联盟韩国
  • 做毕设好的网站百度客服电话24小时
  • 上海手机网站建设电话咨询seo综合查询系统